Is there a way to align scrolling text around an image? - html

I am looking to align my text with this skewed image, but the problem is the text is scrolling. Is there a way to combat this or no?
My goal is to keep the bolded "TITLE HERE" straight across the image but the placeholder text to continue to scroll, but aligning it with the large image to the left. Is this possible? Thanks for your help in advance.
/*BODY STUFF HERE*/
body {
background: WHITE;
background-attachment: fixed;
font-family: montserrat;
}
a {
text-decoration: none;
color: #999;
}
a:hover {
color: indianred;
}
.title {
font-family: montserrat;
font-weight: 900;
font-size: 6vw;
position: relative;
width: 90%;
left: 200px;
margin-top: 0%;
}
.title2 {
font-family: montserrat;
font-weight: 900;
font-size: 1.10vw;
position: static;
width: 90%;
margin-left: 45%;
}
.scrollingtext p {
width: 100%;
padding: 0 10%;
font-size: 13px;
}
/*LEFT PROFILE IMAGE HERE*/
.image {
z-index: -1;
}
.image img {
position: fixed;
width: 50%;
left: -3.5%;
z-index: -1;
-webkit-clip-path: polygon(25% 0%, 100% 0%, 71% 100%, 0% 100%);
clip-path: polygon(25% 0%, 100% 0%, 71% 100%, 0% 100%);
}
/*CELL TABLE STUFF*/
.tablerow {
display: table-row;
width: 100%;
}
.table {
display: table;
}
.cell {
display: table-cell;
}
.right {
width: 50%;
}
.left {
width: 40%;
}
.mobile {
display: none;
}
#media screen and (max-width: 1024px) {
.image img {
width: 100%;
position: relative;
padding: px 5% 0;
margin: 0;
top: 0;
left: 0;
}
h1 {
color: #000;
letter-spacing: normal;
width: 95%;
margin-top: 0;
padding: 0;
margin: 0;
font-size: 70PX;
text-align: center;
font-style: montserrat;
}
.title {
display: none;
}
.cell {
display: block;
}
.desktop {
display: none;
}
.mobile {
display: inherit;
text-align: center;
}
.right {
width: 80%;
margin: 0;
}
.farright {
width: 0;
}
#logo {
height: 25px;
position: absolute;
}
.story {
color: #FFF;
font-family: playfair display;
width: 100%;
height: 200px;
text-shadow: 2px 2px 5px #000;
background-color: #292929;
display: table;
}
.story_inside {
vertical-align: middle;
display: table-cell;
}
.story h2 {
font-size: 40px;
width: 60%;
padding: 0 15%;
margin: 0;
line-height: 35px;
}
.story p {
font-family: montserrat;
margin: 0;
width: 70%;
padding: 10px 15% 0 15%;
}
#media screen and (max-width: 400px) {
h1 {
color: #000;
letter-spacing: normal;
width: 95%;
margin-top: 0;
padding: 0;
margin: 0;
font-size: 40px;
text-align: center;
font-style: montserrat;
}
#media screen and (max-width: 1030px) {
.byline {
font-size: 16px;
width: 100%;
right: 451%;
float: left;
position: relative;
width: 300%;
bottom: -150px;
}
<!--IMAGE GOES HERE-->
<div class="image">
<img src="http://via.placeholder.com/350x1150">
</div>
<div class="scrollingtext">
<!--DESKTOP TITLE AND BYLINE HERE-->
<div class="title">TITLE HERE
<p>
</div>
<div class="title2"><strong>AUTHOR HERE</strong> / TITLE</div>
<!--MOBILE TITLE HERE-->
<div class="table">
<div class="tablerow">
<div class="cell left desktop"></div>
<!--DESKTOP TITLE AND BYLINE HERE-->
<div class="title">
</div>
<div class="cell farright"></div>
</div>
<div class="tablerow">
<div class="cell left desktop">
</div>
<div class="cell right">
<!-- BODY TEXT GOES BELOW HERE -->
<p>This is a set of placeholder text to show an example. This is a set of placeholder text to show an example. This is a set of placeholder text to show an example.</p>
<p>This is a set of placeholder text to show an example. This is a set of placeholder text to show an example. This is a set of placeholder text to show an example. This is a set of placeholder text to show an example. </p>
<p>This is a set of placeholder text to show an example. This is a set of placeholder text to show an example. This is a set of placeholder text to show an example. This is a set of placeholder text to show an example. This is a set of placeholder
text to show an example. This is a set of placeholder text to show an example. </p>
<p>This is a set of placeholder text to show an example. This is a set of placeholder text to show an example. This is a set of placeholder text to show an example. This is a set of placeholder text to show an example. This is a set of placeholder
text to show an example. This is a set of placeholder text to show an example. </p>
<p>This is a set of placeholder text to show an example. This is a set of placeholder text to show an example. This is a set of placeholder text to show an example. This is a set of placeholder text to show an example. This is a set of placeholder
text to show an example. This is a set of placeholder text to show an example. </p>
<p>This is a set of placeholder text to show an example. This is a set of placeholder text to show an example. This is a set of placeholder text to show an example. This is a set of placeholder text to show an example. This is a set of placeholder
text to show an example. This is a set of placeholder text to show an example. This is a set of placeholder text to show an example. </p>
<p>This is a set of placeholder text to show an example. This is a set of placeholder text to show an example. This is a set of placeholder text to show an example. This is a set of placeholder text to show an example. This is a set of placeholder
text to show an example. </p>
<p>This is a set of placeholder text to show an example. This is a set of placeholder text to show an example. This is a set of placeholder text to show an example. This is a set of placeholder text to show an example. This is a set of placeholder
text to show an example. This is a set of placeholder text to show an example. </p>
<p>This is a set of placeholder text to show an example. This is a set of placeholder text to show an example. This is a set of placeholder text to show an example. This is a set of placeholder text to show an example. This is a set of placeholder
text to show an example. </p>
<p>This is a set of placeholder text to show an example. This is a set of placeholder text to show an example. This is a set of placeholder text to show an example. This is a set of placeholder text to show an example. This is a set of placeholder
text to show an example. </p>
<p>This is a set of placeholder text to show an example. This is a set of placeholder text to show an example. This is a set of placeholder text to show an example. This is a set of placeholder text to show an example. This is a set of placeholder
text to show an example. </p>
<p>This is a set of placeholder text to show an example. This is a set of placeholder text to show an example. This is a set of placeholder text to show an example. This is a set of placeholder text to show an example. This is a set of placeholder
text to show an example. </p>
<p>This is a set of placeholder text to show an example. This is a set of placeholder text to show an example. This is a set of placeholder text to show an example. This is a set of placeholder text to show an example. This is a set of placeholder
text to show an example. </p>
<p>This is a set of placeholder text to show an example. This is a set of placeholder text to show an example. This is a set of placeholder text to show an example. This is a set of placeholder text to show an example. This is a set of placeholder
text to show an example. </p>
<p>This is a set of placeholder text to show an example. This is a set of placeholder text to show an example. This is a set of placeholder text to show an example. This is a set of placeholder text to show an example. This is a set of placeholder
text to show an example. </p>
</div>
</div>
</div>
</div>

A simple way to do it would be to make your image float with CSS in the same element as your text.
Like this example;
#my_container {
width: 400px;
text-align: justify;
}
#my_image {
width: 100px;
height: 100px;
float: right;
border: 1px solid #000;
margin: 10px;
}
<div id="my_container">
<div id="my_image">image here</div>
And a lot of copy and paste to fill this example.
And a lot of copy and paste to fill this example.
And a lot of copy and paste to fill this example.
And a lot of copy and paste to fill this example.
And a lot of copy and paste to fill this example.
And a lot of copy and paste to fill this example.
And a lot of copy and paste to fill this example.
And a lot of copy and paste to fill this example.
And a lot of copy and paste to fill this example.
And a lot of copy and paste to fill this example.
And a lot of copy and paste to fill this example.
And a lot of copy and paste to fill this example.
<div>

Just addd this css to fix the Title
.title{font-family: montserrat;
font-weight: 900;
font-size: 6vw;
width: 90%;
position: fixed;
top: 50%;
left: 10%;}

Yes there is a way to do it but I dont know if your going to like the result when scrolling.
Try this;
Create some empty div that will have the width matching your image and make them float to the left so any text will bump on it.
#container{
width :400px;
height:400px;
border:1px solid #000;
}
.filler{
float:left;
clear:left;
border:1px solid #000;
height:15px;
}
#filler1{
width:200px;
}
#filler2{
width:190px;
}
#filler3{
width:180px;
}
#filler4{
width:170px;
}
#filler5{
width:160px;
}
#filler6{
width:150px;
}
#filler7{
width:140px;
}
#filler8{
width:130px;
}
<div id="container">
<div id="filler1" class="filler"></div>
<div id="filler2" class="filler"></div>
<div id="filler3" class="filler"></div>
<div id="filler4" class="filler"></div>
<div id="filler5" class="filler"></div>
<div id="filler6" class="filler"></div>
<div id="filler7" class="filler"></div>
<div id="filler8" class="filler"></div>
some text to copy and paste and fill the example.
some text to copy and paste and fill the example.
some text to copy and paste and fill the example.
some text to copy and paste and fill the example.
some text to copy and paste and fill the example.
</div>

Related

How to style div tag based on content?

I want to create div tag based on size of content inside it. I have created a message box and inside it there is a message text. When the text is less eg: Hi, hello then the div tag should align itself and should not leave too much space on right side.
Code:
<div className="msgBox"><p className="msgText">{message.message}</p></div>
CSS:
.msgBox {
background-color: #EBEEFD;
border-radius: 25px;
max-width: 150px;
margin-top: 10px;
}
.msgText {
padding: 10px;
}
So my final goal is to have message box size based on the text content inside it. If content is small then small box large content then large box.
screenshot:
Instead of the assigning the background color to msgBox assign it to the text and make it a display:inline-block to have the width of its content
.msgBox {
max-width: 150px;
margin-top: 5px;
}
.msgText {
background-color: #EBEEFD;
border-radius: 25px;
padding: 10px;
display: inline-block;
}
<div class="msgBox">
<p class="msgText">Hello</p>
</div>
<div class="msgBox">
<p class="msgText">What are you doing?</p>
</div>
<div class="msgBox">
<p class="msgText">What are you doing in this chat application?</p>
</div>

Display: inline-block not working with divs

i'm trying to create a news box where there will be a div containing an image on the left and a div containing lines of text on the right. Whenever i set them to inline-block the text goes right beneath the div image and stays there. I want them to be in a single line.
Here's my code, can you point out what i'm doing wrong?
EDIT: Corrected the TYPO but still...
<div id="newsBox">
<div id="newsImg">
<img src="images/news1.jpg" alt="news1">
</div>
<div class="metaNews">
<div id="newsTitle">
<h3>Text Text Text Text Text Text Text Text .</h3>
</div>
<div class="newsBrief">
<p>Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text </p>
</div>
</div>
<div style="clear:both"></div>
<div class="newsBy">
<span class="metaDate">Posted on 10/5/2017</span>
<span class="metaBy">By Li</span>
</div>
<div class="newsLink">
View →
</div>
<div style="clear:both"></div>
</div>
And the CSS:
#newsBox {
width: 85%;
margin: 0.5rem auto;
padding: 0.5rem;
border: #333 solid 1px;
background-color: #c2c2c2;
}
#newsImg {
display:inline-block;
}
#newsImg > img{
max-width: 120px;
max-height: 120px;
padding-right:20px;
vertical-align: middle;
}
.metaNews{
text-align:center;
display:inline-block;
}
#newsTitle {
}
.newsBy {
display:inline-block;
}
.newsLink {
float:right;
width: 6rem;
text-align: center;
background-color: #2F4F4F;
}
.newsLink a{
font-family: 'Play', sans-serif;
color: #fff;
text-decoration: none;
}
You got a typo in:
.metaNews{
text-align:center;
display:inline-blockl
}
inline-blockl has extra l instead of a ;
.metaNews{
text-align:center;
display:inline-block;
}
jsfiddle (you should stretch the result window a bit to let it have enough width to see the results you wanted )
Wrap the divs <div id="newsImg"> , <div class="metaNews"> using a div and set its display as flex.
#newsBox {
width: 85%;
margin: 0.5rem auto;
padding: 0.5rem;
border: #333 solid 1px;
background-color: #c2c2c2;
}
#newsImgWrapper {
display: flex;
}
#newsImg {
display: inline-block;
}
#newsImg>img {
max-width: 120px;
max-height: 120px;
padding-right: 20px;
vertical-align: middle;
}
.metaNews {
text-align: center;
display: inline-block;
}
#newsTitle h3{ margin:0;}
.newsBy {
display: inline-block;
}
.newsLink {
float: right;
width: 6rem;
text-align: center;
background-color: #2F4F4F;
}
.newsLink a {
font-family: 'Play', sans-serif;
color: #fff;
text-decoration: none;
}
<div id="newsBox">
<div id="newsImgWrapper">
<div id="newsImg">
<img src="images/news1.jpg" alt="news1">
</div>
<div class="metaNews">
<div id="newsTitle">
<h3>Text Text Text Text Text Text Text Text .</h3>
</div>
<div class="newsBrief">
<p>Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text </p>
</div>
</div>
</div>
<div style="clear:both"></div>
<div class="newsBy">
<span class="metaDate">Posted on 10/5/2017</span>
<span class="metaBy">By Li</span>
</div>
<div class="newsLink">
View →
</div>
<div style="clear:both"></div>
</div>
The problem is that you are using display: inline-block, Without use width, display: inline-block does not work without using setting width,
So I added these properties: width: 50% to #newsImg selector and to .metaNews,
Here a running example in jsFiddle

Relative positioning with height based on content problems

Hello I'm trying to achieve this
So in this case you can see, we have 3 divs. Top one will have a width of 100% and an height:auto. Also will be relative positioned of course.
Second one the same, but in this case I'll add a dummy text that will define the height of the div.
And the 3rd one just like the first one, the problem is that, they're not alinged. Not one before the other. Could someone tell me what is wrong with my code? Thanks
#block1 {
position:relative;
width:100%;
height:auto;
background-color: blue;
}
#img1 {
width:100px;
height:100px;
position:absolute;
left:50%;
transform:translate(-50%);
-webkit-transform:translate(-50%);
}
#block2 {
position:relative;
width:100%;
height:auto;
background-color: orange;
}
.dummytext {
font-family: 'Ralleway, sans-serif';
font-size: 20px;
text-align: justify;
margin:10px;
}
#block3 {
position:relative;
width:100%;
height:auto;
background-color: brown;
}
#img2 {
width:100px;
height:90px;
position:absolute;
left:50%;
transform:translate(-50%);
-webkit-transform:translate(-50%);
}
<div id="block1">
<img src="images/img1.png" id="img1"/>
</div>
<div id="block2">
<h3 class="dummytext">Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, </h3>
</div>
<div id="block3">
<img id="img2" src="images/img2.png"/>
</div>
Could someone help me to understand?
This is because your image is abolutely positioned, which won't contribute to the size of the container.
You should remove the absolute position of the image.
Try this:
div {
text-align: center; /* center everything inside the divs */
}
#block1 {
width: 100%;
height: auto;
background-color: blue;
}
#img1 {
width: 100px;
height: 100px;
}
#block2 {
width: 100%;
height: auto;
background-color: orange;
}
.dummytext {
font-family: 'Ralleway, sans-serif';
font-size: 20px;
text-align: justify;
margin: 10px;
}
#block3 {
width: 100%;
height: auto;
background-color: brown;
}
#img2 {
width: 100px;
height: 90px;
}
<div id="block1">
<img src="images/img1.png" id="img1" />
</div>
<div id="block2">
<h3 class="dummytext">Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, </h3>
</div>
<div id="block3">
<img id="img2" src="images/img2.png" />
</div>
Your elements aren't showing, due to having set the property position on them.
To make this work, add table elements around the img tags and set the margin: auto property on them.
#block1 {
width: 100%;
height: auto;
background-color: blue;
}
#img1 {
width: 100px;
height: 100px;
left: 50%;
transform: translate(-50%);
-webkit-transform: translate(-50%);
}
#block2 {
width: 100%;
height: auto;
background-color: orange;
}
.dummytext {
font-family: 'Ralleway, sans-serif';
font-size: 20px;
text-align: justify;
margin: 10px;
}
#block3 {
width: 100%;
height: auto;
background-color: brown;
}
#img2 {
width: 100px;
height: 90px;
left: 50%;
transform: translate(-50%);
-webkit-transform: translate(-50%);
}
table {
margin: auto;
}
<div id="block1">
<table>
<tbody>
<tr>
<td>
<img id="img1" src="images/img1.png"></td></tr></tbody><table>
</div>
<div id="block2">
<h3 class="dummytext">Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, Text Example, </h3>
</div>
<div id="block3">
<table>
<tbody>
<tr>
<td>
<img id="img2" src="images/img2.png"></td></tr></tbody><table>
</div>
To control the layout of your divs you should give them a display property. Try adding display: table-row; for each block
You don't need to use absolute positioning to accomplish this. It is easier (and safer) to use the default static positioning and center things using margin: 0 auto like so:
#block1 {
width:100%;
background-color: blue;
}
#img1 {
height: 100px;
width: 100px;
margin: 0 auto;
}
#block2 {
width:100%;
background-color: orange;
}
.dummytext {
font-family: 'Ralleway, sans-serif';
font-size: 20px;
text-align: justify;
margin:10px;
}
#block3 {
width:100%;
background-color: brown;
}
#img2 {
width:100px;
height:90px;
margin 0 auto;
}
This is the most standard solution for achieving the layout you want.

Label won't stay vertical center, bootstrap

I'm having some trouble with this label, it doesn't seem to want to stay vertically centered, it's always at the top, if anyone can help that would be great, thank you.
http://jsfiddle.net/tu7moprn/
<div class="container">
<div class="row">
<div class="col-md-4">
<div class="innertext">Text Test Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text</div><span class="label label-default pull-right">New</span>
</div>
<div class="col-md-4">Text</div>
<div class="col-md-4">Text</div>
</div>
</div>
#import url('http://getbootstrap.com/dist/css/bootstrap.min.css');
h4 {
margin-top: 25px;
}
.row {
margin-bottom: 20px;
}
.row .row {
margin-top: 10px;
margin-bottom: 0;
}
[class*="col-"] {
padding-top: 15px;
padding-bottom: 15px;
background-color: #eee;
background-color: rgba(86, 61, 124, .15);
border: 1px solid #ddd;
border: 1px solid rgba(86, 61, 124, .2);
}
hr {
margin-top: 40px;
margin-bottom: 40px;
}
.innertext {
display:inline-block;
width:90%
}
You can remove the class pull-right from the label and then add this proeprties:
.label {
display:inline-block;
vertical-align:middle;
}
.innertext {
vertical-align:middle;
}
Check this Demo Fiddle
You can always override by adding position: absolute;, top: 50%; and margin-top: -x; (mind the minus), where x is a half of the height of your label. It will center you label vertically. Don't forget to set position: relative; to parent of that span element. It will always stay on the middle of parent div.
If this is what you want. Otherwise provide more details.
Here is a working fork of your fiddle http://jsfiddle.net/r0gsewtd/

How to place and rotate text in background of elements with CSS3?

I have a repeatable wrapper element with children elements: content element, with left and right elements, all divs.
I want to add some text (ie, "Retired"), rotated by few degrees, like a watermark in the background of content. This can't be a background image, because this text shall be localized (and for maintenance purpose, easier to change a text instead of an image).
Next image shows a disposition of text "Retired" (without showing left and right elements):
Here's the basic HTML layout of this element, it might be useful:
<div class="wrapper">
<div class="leftcolumn">Left column</div>
<div class="content">
<h1>Text Text Text Text Text Text</h1>
<p>Text Text Text Text Text Text Text Text Text</p>
</div>
<div class="rightcolumn">Right column</div>
</div>
And CSS:
.wrapper {
margin: 0 auto;
width: 450px;
display:block;
background-color:#222222;
border-radius: 5px;
}
.content {
float: left;
width: 318px;
padding-left: 5px;
}
.leftcolumn {
width: 50px;
float: left;
}
.rightcolumn {
width: 75px;
float: left;
}
.leftcolumn {
width: 50px;
float: left;
}
.rightcolumn {
width: 75px;
float: left;
}
Here is a working code:
Html
<div id="wrapper">
<div id="leftcolumn">Left column</div>
<div id="content">
<h1>Text Text Text Text Text Text</h1>
<p>Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text</p>
</div>
<div id="rightcolumn">Right column</div>
</div>
<div id="textwatermark">
<p>Retired</p>
</div>
CSS
#textwatermark {
color: #d0d0d0;
font-size: 50pt;
-webkit-transform: rotate(-30deg);
-moz-transform: rotate(-45deg);
position: absolute;
width: 100%;
height: 100%;
margin: 0;
z-index: -1;
left:170px;
top:-100px;
}
Check the demo here:http://jsfiddle.net/x6FwG/
You could use transform:rotate(). Check this out http://www.w3schools.com/cssref/css3_pr_transform.asp . You'll have to put an Element inside an Element to get the effect you want.
Note: This won't work in older Browsers, so you may want to just use something like:
background-image:url('location.png');