So I'm trying to align 2 divs side by side. Here's my markup
<div id="DIV_1">
<div id="DIV_2">
</div>
<div id="DIV_3">
<div id="DIV_4">
<div id="DIV_5">
0
</div>
<div id="DIV_6">
Likes
</div>
</div>
<div id="DIV_7">
<div id="DIV_8">
1
</div>
<div id="DIV_10">
Followers
</div>
</div>
</div>
</div>
And my CSS
#DIV_1 {
height: 81px;
width: 864px;
perspective-origin: 432px 40.5px;
transform-origin: 432px 40.5px;
font: normal normal normal 16px/normal sans-serif;
}/*#DIV_1*/
#DIV_2 {
height: 40px;
width: 40px;
perspective-origin: 20px 20px;
transform-origin: 20px 20px;
background: rgb(0, 157, 255) none repeat scroll 0% 0% / auto padding-box border-box;
font: normal normal normal 16px/normal sans-serif;
}/*#DIV_2*/
#DIV_3 {
height: 41px;
text-align: center;
width: 187px;
perspective-origin: 93.5px 20.5px;
transform-origin: 93.5px 20.5px;
font: normal normal normal 16px/normal sans-serif;
margin: 0px 338.5px;
}/*#DIV_3*/
#DIV_4 {
color: rgb(70, 70, 70);
display: table-cell;
height: 33px;
text-align: center;
text-decoration: none solid rgb(70, 70, 70);
vertical-align: middle;
width: 92px;
perspective-origin: 46.5px 20.5px;
transform-origin: 46.5px 20.5px;
border-top: 0px none rgb(70, 70, 70);
border-right: 1px solid rgb(146, 146, 146);
border-bottom: 0px none rgb(70, 70, 70);
border-left: 0px none rgb(70, 70, 70);
font: normal normal normal 16px/normal 'Helvetica Neue', Helvetica, Arial, sans-serif;
outline: rgb(70, 70, 70) none 0px;
padding: 4px 0px;
}/*#DIV_4*/
#DIV_5 {
color: rgb(70, 70, 70);
height: 17px;
letter-spacing: 0.18000000715255737px;
text-align: center;
text-decoration: none solid rgb(70, 70, 70);
width: 92px;
perspective-origin: 46px 8.5px;
transform-origin: 46px 8.5px;
border: 0px none rgb(70, 70, 70);
font: normal normal 500 15px/17px 'Helvetica Neue', Helvetica, Arial, sans-serif;
outline: rgb(70, 70, 70) none 0px;
}/*#DIV_5*/
#DIV_6 {
color: rgb(70, 70, 70);
height: 16px;
letter-spacing: 0.3479999899864197px;
text-align: center;
text-decoration: none solid rgb(70, 70, 70);
width: 92px;
perspective-origin: 46px 8px;
transform-origin: 46px 8px;
border: 0px none rgb(70, 70, 70);
font: normal normal 300 12px/16px 'Helvetica Neue', Helvetica, Arial, sans-serif;
outline: rgb(70, 70, 70) none 0px;
}/*#DIV_6*/
#DIV_7 {
color: rgb(70, 70, 70);
display: table-cell;
height: 33px;
text-align: center;
text-decoration: none solid rgb(70, 70, 70);
vertical-align: middle;
width: 94px;
perspective-origin: 47px 20.5px;
transform-origin: 47px 20.5px;
border: 0px none rgb(70, 70, 70);
font: normal normal normal 16px/normal 'Helvetica Neue', Helvetica, Arial, sans-serif;
outline: rgb(70, 70, 70) none 0px;
padding: 4px 0px;
}/*#DIV_7*/
#DIV_8 {
color: rgb(70, 70, 70);
height: 17px;
letter-spacing: 0.18000000715255737px;
text-align: center;
text-decoration: none solid rgb(70, 70, 70);
width: 94px;
perspective-origin: 47px 8.5px;
transform-origin: 47px 8.5px;
border: 0px none rgb(70, 70, 70);
font: normal normal 500 12px/17px 'Helvetica Neue', Helvetica, Arial, sans-serif;
outline: rgb(70, 70, 70) none 0px;
}/*#DIV_8*/
#A_9 {
color: rgb(102, 153, 255);
letter-spacing: 0.18000000715255737px;
text-align: center;
text-decoration: none solid rgb(102, 153, 255);
border: 0px none rgb(102, 153, 255);
font: normal normal 500 15px/17px 'Helvetica Neue', Helvetica, Arial, sans-serif;
outline: rgb(102, 153, 255) none 0px;
}/*#A_9*/
#DIV_10 {
color: rgb(70, 70, 70);
height: 16px;
letter-spacing: 0.3479999899864197px;
text-align: center;
text-decoration: none solid rgb(70, 70, 70);
width: 94px;
perspective-origin: 47px 8px;
transform-origin: 47px 8px;
border: 0px none rgb(70, 70, 70);
font: normal normal 300 12px/16px 'Helvetica Neue', Helvetica, Arial, sans-serif;
outline: rgb(70, 70, 70) none 0px;
}/*#DIV_10*/
I've tried changing the display and everything. For some reason I just can't get the square to be vertically aligned with the other following count. Also here's a demo http://jsfiddle.net/z6jAA/1/
Add display: inline-block on #DIV_2 and #DIV_3, and remove the margin on #DIV_3.
Fiddle: http://jsfiddle.net/z6jAA/2/
Have you tried using the following properties and values for the CSS declaration?
#idName { float: left; position: relative; }
Code example:
HTML
<div id="div1">bla </div>
<div id="div2"> bla2</div>
CSS
#div1 {
float: left;
position: relative;
}
#div2 {
float: left;
position: relative;
}
Related
I'm currently trying to add to this python word cloud library a html export (to the existing image one).
The big problem right now is, that the underlying python image library is treating text differently. It draws the "box" around a word at the upper edge of the biggest character of the word. So the box is always as tight as possible to the text.
Browser interpret HTML + CSS differently. They don't make the box as tight as possible, but in a way that all possible characters can fit in. So if the word only consists of lower-case characters the browser will still put some space to the top for the case that there could be upper-case characters.
So my question is now how to achieve a similar behavior with such a "tight" box in CSS.
To illustrate better what I mean, here's an image
In the background you see the resulting png file from the python library, and on top of that the HTML+CSS version. The small white boxes mark the beginning of the box in the png. I put a 50% opacity background around the HTML words to show their box model.
My HTML code for this example is:
<html>
<head>
<link href="https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/html5resetcss/html5reset-1.6.1.css" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Droid+Sans+Mono" rel="stylesheet">
</head>
<body>
<ul style="width:400px; height: 200px; background-image: url(test.png); position: absolute; top:0;left:0;">
<li style="background-color:rgba(255, 255, 255, 0.5); padding-left: 5.5em; display: inline; list-style: none; margin: 0; padding: 0; font-family: 'Droid Sans Mono', monospace;position: absolute; color: rgb(119, 209, 83); top: 64px; left: 15px; font-size: 102px">hallo</li>
<li style="background-color:rgba(255, 255, 255, 0.5); padding-left: 5.5em; display: inline; list-style: none; margin: 0; padding: 0; font-family: 'Droid Sans Mono', monospace;transform: rotate(270deg); transform-origin: 50% 90% 0;position: absolute; color: rgb(47, 180, 124); top: 51px; left: 321px; font-size: 73px">ich</li>
<li style="background-color:rgba(255, 255, 255, 0.5); padding-left: 5.5em; display: inline; list-style: none; margin: 0; padding: 0; font-family: 'Droid Sans Mono', monospace;position: absolute; color: rgb(108, 205, 90); top: 3px; left: 99px; font-size: 61px">test</li>
<li style="background-color:rgba(255, 255, 255, 0.5); padding-left: 5.5em; display: inline; list-style: none; margin: 0; padding: 0; font-family: 'Droid Sans Mono', monospace;position: absolute; color: rgb(189, 223, 38); top: 142px; left: 114px; font-size: 59px">sie</li>
<li style="background-color:rgba(255, 255, 255, 0.5); padding-left: 5.5em; display: inline; list-style: none; margin: 0; padding: 0; font-family: 'Droid Sans Mono', monospace;position: absolute; color: rgb(168, 219, 52); top: 37px; left: 50px; font-size: 44px">du</li>
<li style="background-color:rgba(255, 255, 255, 0.5); padding-left: 5.5em; display: inline; list-style: none; margin: 0; padding: 0; font-family: 'Droid Sans Mono', monospace;position: absolute; color: rgb(31, 161, 135); top: 8px; left: 281px; font-size: 44px">er</li>
<li style="background-color:rgba(255, 255, 255, 0.5); padding-left: 5.5em; display: inline; list-style: none; margin: 0; padding: 0; font-family: 'Droid Sans Mono', monospace;position: absolute; color: rgb(41, 122, 142); top: 143px; left: 256px; font-size: 44px">es</li>
<li style="background-color:rgba(255, 255, 255, 0.5); padding-left: 5.5em; display: inline; list-style: none; margin: 0; padding: 0; font-family: 'Droid Sans Mono', monospace;position: absolute; color: rgb(69, 55, 129); top: 149px; left: 17px; font-size: 44px">wir</li>
<li style="background-color:rgba(255, 255, 255, 0.5); padding-left: 5.5em; display: inline; list-style: none; margin: 0; padding: 0; font-family: 'Droid Sans Mono', monospace;position: absolute; color: rgb(38, 173, 129); top: 34px; left: 241px; font-size: 44px">ihr</li>
<li style="background-color:rgba(255, 255, 255, 0.5); padding-left: 5.5em; display: inline; list-style: none; margin: 0; padding: 0; font-family: 'Droid Sans Mono', monospace;position: absolute; color: rgb(108, 205, 90); top: 14px; left: 318px; font-size: 41px">und</li>
<li style="background-color:rgba(255, 255, 255, 0.5); padding-left: 5.5em; display: inline; list-style: none; margin: 0; padding: 0; font-family: 'Droid Sans Mono', monospace;position: absolute; color: rgb(170, 220, 50); top: 1px; left: 2px; font-size: 37px">soll</li>
<li style="background-color:rgba(255, 255, 255, 0.5); padding-left: 5.5em; display: inline; list-style: none; margin: 0; padding: 0; font-family: 'Droid Sans Mono', monospace;position: absolute; color: rgb(31, 154, 138); top: 167px; left: 227px; font-size: 33px">dann</li>
<li style="background-color:rgba(255, 255, 255, 0.5); padding-left: 5.5em; display: inline; list-style: none; margin: 0; padding: 0; font-family: 'Droid Sans Mono', monospace;transform: rotate(270deg); transform-origin: 50% 90% 0;position: absolute; color: rgb(67, 62, 133); top: 54px; left: 176px; font-size: 33px">nun</li>
<li style="background-color:rgba(255, 255, 255, 0.5); padding-left: 5.5em; display: inline; list-style: none; margin: 0; padding: 0; font-family: 'Droid Sans Mono', monospace;transform: rotate(270deg); transform-origin: 50% 90% 0;position: absolute; color: rgb(234, 229, 26); top: 71px; left: 128px; font-size: 33px">tun</li>
</ul>
</body>
</html>
I don't think the problem can be solved in pure HTML/CSS, as the box is unaware of the actual characters in it — it just reserves height based on properties in the font.
You could either pick apart the font (using something like opentype.js, looking at the height of the characters in your box and setting its height accordingly. A simpler solution would be to draw your text on a canvas and crop the empty space around it, effectively doing what the Python version does. Downside is that your text is now an image (harder to link or select).
This question already has answers here:
CSS - Equal Height Columns?
(11 answers)
Closed 6 years ago.
#DIV_1 {
bottom: -10px;
height: 176px;
left: 0px;
position: relative;
right: 0px;
text-align: left;
top: 10px;
width: 379px;
perspective-origin: 189.5px 88px;
transform-origin: 189.5px 88px;
background: rgb(238, 238, 238) none repeat scroll 0% 0% / auto padding-box border-box;
font: normal normal normal normal 14px / normal "Lucida Grande", Helvetica, Arial, sans-serif;
list-style: none outside none;
margin: 0px 0px -5px;
overflow: hidden;
}/*#DIV_1*/
#DIV_2 {
box-sizing: border-box;
float: left;
height: 77px;
text-align: center;
width: 189.5px;
perspective-origin: 94.75px 38.5px;
transform-origin: 94.75px 38.5px;
border-right: 5px solid rgb(255, 255, 255);
font: normal normal normal normal 14px / normal "Lucida Grande", Helvetica, Arial, sans-serif;
list-style: none outside none;
padding: 30px;
}/*#DIV_2*/
#DIV_3 {
box-sizing: border-box;
float: left;
height: 77px;
text-align: center;
width: 189.5px;
perspective-origin: 94.75px 38.5px;
transform-origin: 94.75px 38.5px;
font: normal normal normal normal 14px / normal "Lucida Grande", Helvetica, Arial, sans-serif;
list-style: none outside none;
padding: 30px;
}/*#DIV_3*/
#DIV_4 {
box-sizing: border-box;
color: rgb(255, 255, 255);
float: left;
height: 99px;
text-align: center;
width: 189.5px;
column-rule-color: rgb(255, 255, 255);
perspective-origin: 94.75px 49.5px;
transform-origin: 94.75px 49.5px;
background: rgb(192, 57, 43) none repeat scroll 0% 0% / auto padding-box border-box;
border-top: 5px solid rgb(255, 255, 255);
border-right: 5px solid rgb(255, 255, 255);
border-bottom: 0px none rgb(255, 255, 255);
border-left: 0px none rgb(255, 255, 255);
font: normal normal bold normal 14px / normal "Lucida Grande", Helvetica, Arial, sans-serif;
list-style: none outside none;
outline: rgb(255, 255, 255) none 0px;
padding: 30px;
}/*#DIV_4*/
#DIV_5 {
box-sizing: border-box;
color: rgb(255, 255, 255);
float: left;
height: 82px;
text-align: center;
width: 189.5px;
column-rule-color: rgb(255, 255, 255);
perspective-origin: 94.75px 41px;
transform-origin: 94.75px 41px;
background: rgb(142, 68, 173) none repeat scroll 0% 0% / auto padding-box border-box;
border-top: 5px solid rgb(255, 255, 255);
border-right: 0px none rgb(255, 255, 255);
border-bottom: 0px none rgb(255, 255, 255);
border-left: 0px none rgb(255, 255, 255);
font: normal normal bold normal 14px / normal "Lucida Grande", Helvetica, Arial, sans-serif;
list-style: none outside none;
outline: rgb(255, 255, 255) none 0px;
padding: 30px;
}/*#DIV_5*/
<div id="DIV_1">
<div id="DIV_2">
Ben Franklin
</div>
<div id="DIV_3">
Thomas Jefferson
</div>
<div id="DIV_4">
George Washington
</div>
<div id="DIV_5">
Abraham Lincoln
</div>
</div>
I have 2 column that its content might have different length, thus it will have multiple lines, so how do I ensure that the least line of content have the equal height? I can't use fixed height like height:100px; because the length of the content might be more than that.
You can use flexbox to achieve equal heights. This is set on the outer wrapper div:
#DIV_1 {
display: flex;
flex-wrap: wrap;
}
You'll also need to remove the fixed heights and float on the inner divs. If you also want the content in the inner divs to be vertically centered you can make then display:
#DIV_2,
#DIV_3,
#DIV_4,
#DIV_5 {
display: flex;
flex-direction: column;
justify-content: center;
}
#DIV_1 {
bottom: -10px;
display: flex;
flex-wrap: wrap;
left: 0px;
position: relative;
right: 0px;
text-align: left;
top: 10px;
width: 379px;
perspective-origin: 189.5px 88px;
transform-origin: 189.5px 88px;
background: rgb(238, 238, 238) none repeat scroll 0% 0% / auto padding-box border-box;
font: normal normal normal normal 14px / normal "Lucida Grande", Helvetica, Arial, sans-serif;
list-style: none outside none;
margin: 0px 0px -5px;
overflow: hidden;
}/*#DIV_1*/
#DIV_2 {
box-sizing: border-box;
text-align: center;
width: 189.5px;
perspective-origin: 94.75px 38.5px;
transform-origin: 94.75px 38.5px;
border-right: 5px solid rgb(255, 255, 255);
font: normal normal normal normal 14px / normal "Lucida Grande", Helvetica, Arial, sans-serif;
list-style: none outside none;
padding: 30px;
}/*#DIV_2*/
#DIV_3 {
box-sizing: border-box;
text-align: center;
width: 189.5px;
perspective-origin: 94.75px 38.5px;
transform-origin: 94.75px 38.5px;
font: normal normal normal normal 14px / normal "Lucida Grande", Helvetica, Arial, sans-serif;
list-style: none outside none;
padding: 30px;
}/*#DIV_3*/
#DIV_4 {
box-sizing: border-box;
color: rgb(255, 255, 255);
text-align: center;
width: 189.5px;
column-rule-color: rgb(255, 255, 255);
perspective-origin: 94.75px 49.5px;
transform-origin: 94.75px 49.5px;
background: rgb(192, 57, 43) none repeat scroll 0% 0% / auto padding-box border-box;
border-top: 5px solid rgb(255, 255, 255);
border-right: 5px solid rgb(255, 255, 255);
border-bottom: 0px none rgb(255, 255, 255);
border-left: 0px none rgb(255, 255, 255);
font: normal normal bold normal 14px / normal "Lucida Grande", Helvetica, Arial, sans-serif;
list-style: none outside none;
outline: rgb(255, 255, 255) none 0px;
padding: 30px;
}/*#DIV_4*/
#DIV_5 {
box-sizing: border-box;
color: rgb(255, 255, 255);
text-align: center;
width: 189.5px;
column-rule-color: rgb(255, 255, 255);
perspective-origin: 94.75px 41px;
transform-origin: 94.75px 41px;
background: rgb(142, 68, 173) none repeat scroll 0% 0% / auto padding-box border-box;
border-top: 5px solid rgb(255, 255, 255);
border-right: 0px none rgb(255, 255, 255);
border-bottom: 0px none rgb(255, 255, 255);
border-left: 0px none rgb(255, 255, 255);
font: normal normal bold normal 14px / normal "Lucida Grande", Helvetica, Arial, sans-serif;
list-style: none outside none;
outline: rgb(255, 255, 255) none 0px;
padding: 30px;
}/*#DIV_5*/
<div id="DIV_1">
<div id="DIV_2">
Ben Franklin
</div>
<div id="DIV_3">
Thomas Jefferson
</div>
<div id="DIV_4">
George Washington
</div>
<div id="DIV_5">
Abraham Lincoln
</div>
</div>
This question already has answers here:
Line before and after title over image [duplicate]
(2 answers)
Closed 7 years ago.
I am trying to draw two horizontal lines across a box:
http://codepen.io/anon/pen/gpZqOQ
I used a plugin to generate some code based on a design. However the end result is not optimized.
<h1 id="H1_1">
<span id="SPAN_2">Feedback</span>
</h1>
#H1_1 {
box-sizing: border-box;
clear: both;
color: rgb(64, 64, 64);
height: 45px;
position: relative;
text-align: center;
width: 1140px;
perspective-origin: 570px 22.5px;
transform-origin: 570px 22.5px;
border: 0px none rgb(64, 64, 64);
font: normal normal normal normal 15px/22.5px 'Source Sans Pro', sans-serif;
margin: 0px 0px 70px;
outline: rgb(64, 64, 64) none 0px;
}/*#H1_1*/
#H1_1:after {
box-sizing: border-box;
color: rgb(64, 64, 64);
display: block;
height: 1px;
left: 0px;
position: absolute;
text-align: center;
top: 22.5px;
width: 1140px;
align-self: stretch;
perspective-origin: 570px 0.5px;
transform-origin: 570px 0.5px;
content: '"' '"';
background: rgb(189, 195, 199) none repeat scroll 0% 0% / auto padding-box border-box;
border: 0px none rgb(64, 64, 64);
font: normal normal normal normal 15px/22.5px 'Source Sans Pro', sans-serif;
outline: rgb(64, 64, 64) none 0px;
}/*#H1_1:after*/
#SPAN_2 {
box-sizing: border-box;
color: rgb(189, 195, 199);
display: inline-block;
height: 45px;
position: relative;
text-align: center;
text-transform: uppercase;
width: 108.890625px;
z-index: 10;
perspective-origin: 54.4375px 22.5px;
transform-origin: 54.4375px 22.5px;
background: rgb(255, 255, 255) none repeat scroll 0% 0% / auto padding-box border-box;
border: 3px solid rgb(189, 195, 199);
font: normal normal bold normal 15px/normal Montserrat, sans-serif;
outline: rgb(189, 195, 199) none 0px;
padding: 10px 20px;
transition: all 0.2s ease 0s;
}/*#SPAN_2*/
Is there any other simpler way to achieve this via CSS?
<hr style=" width : 100%;">
<span id="SPAN_2">Feedback</span>
Apply following CSS
hr{
display: inline-block;
margin: 25px 0;
position: absolute;
}
#SPAN_2 {
position: absolute;
z-index: 2;
display: inline-block;
border: 3px solid rgb(189, 195, 199);
outline: rgb(189, 195, 199) none 0px;
padding: 10px 20px;
margin: 0 0 0 50%;
}
Try this:
<div>
bla
</div>
in combination with:
div {
padding: 80px;
background-color: red;
border-top: 5px double black;
border-bottom: 3px dotted black;
}
See http://jsfiddle.net/4ghvvke3/ to get the idea.
Or do I misunderstand your question, and do you wish to have a line behind your main box object?
I that case I advise background-image of 1px width with x-repeat, probably less bytes than all the CSS code.
Demo
using :before and :after like you have it, i added a classname instead of random ids
<h1 class="feedback">
<span>Feedback</span>
</h1>
css
.feedback {
position: relative;
text-align: center;
}
.feedback span {
box-sizing: border-box;
color: rgb(189, 195, 199);
display: inline-block;
height: 45px;
position: relative;
text-align: center;
text-transform: uppercase;
width: auto;
z-index: 10;
perspective-origin: 54.4375px 22.5px;
transform-origin: 54.4375px 22.5px;
background: rgb(255, 255, 255) none repeat scroll 0% 0% / auto padding-box border-box;
border: 3px solid rgb(189, 195, 199);
font: normal normal bold normal 15px/normal Montserrat, sans-serif;
outline: rgb(189, 195, 199) none 0px;
padding: 10px 20px;
transition: all 0.2s ease 0s;
position: relative;
z-index: 1;
}
.feedback:before,
.feedback:after {
content: '';
display: inline-block;
border: 1px solid rgb(189, 195, 199);
width: 100%;
position: absolute;
z-index: 0;
left: 0;
}
.feedback:before {
top: 40%;
}
.feedback:after {
bottom: 40%;
}
I made a simple fiddle to demonstrate the simplest way of achieving this.
<div id="box">
<hr class="line1">
<hr class="line2">
</div>
And CSS:
#box {
width: 85%;
margin: 0 auto;
}
.line1 {
width: 100%;
}
.line2 {
width: 100%;
}
This uses the hr property to draw 2 lines horizontally, in this case taking up 100% width of the parent container.
Or something like this for thinner lines.
.container {
width: 100%;
margin-top:3em;
text-align:center;
}
.feedback_box {
color: rgb(189, 195, 199);
line-height:45px;
text-align: center;
text-transform: uppercase;
background: rgb(255, 255, 255);
border: 3px solid rgb(189, 195, 199);
font: normal normal bold normal 15px/normal Montserrat, sans-serif;
padding: 1em;
z-index:4;
position:relative;
}
.line1, .line2 {
border:0;
height:3px;
background:rgb(189, 195, 199);
}
.line1 {
margin-bottom:-20px;
}
.line2 {
margin-top:-20px;
}
<div class="container">
<hr class="line1">
<span class="feedback_box">Feedback</span>
<hr class="line2">
</div>
I want to achieve something like this
How do I put this triangle css
.triangle{
width: 0;
height: 0;
border-style: solid;
border-width: 21px 42px 21px 0;
border-color: transparent #eeeeee transparent transparent;
line-height: 0px;
_border-color: #000000 #eeeeee #000000 #000000;
_filter: progid:DXImageTransform.Microsoft.Chroma(color='#000000');
}
to make a triangle at the end of my tab? DEMO http://jsfiddle.net/p69qfqsx/
New CSS for the list:
ul{
width: 200px;
border: 1px solid #ccc;
}
li a{
background-color: #fff;
padding: 5px 10px;
display: block;
position: relative;
color: #666;
text-decoration: none;
}
li a:hover, li.active a{
background-color: #eee;
}
li a:hover:after, li.active a:after{
width: 0;
height: 0;
border-top: 10px solid transparent;
border-bottom: 10px solid transparent;
border-right: 10px solid #fff;
/* background-color: #ddd; */
content: '';
position: absolute;
right: -2px;
top: 0;
}
https://jsfiddle.net/p69qfqsx/2/
Tested just for chrome hope it helps.
Here's the codes I modify for little change:
li a:hover:after{
width: 0;
height: 0;
border-top: 10px solid transparent;
border-bottom: 12px solid transparent;
border-right: 10px solid #fff;
/* background-color: #ddd; */
content: '';
position: absolute;
right: -2px;
top: 1;
}
I just remove li.active a:after to let pointer makes it. DEMO
But I prefer using what #Andre Morales suggest since it works here.
It's pretty easy. You can do it in many methods, I can suggest an easy trick. Add an span inside the li tag. check this out : jsFiddle
HTML
<li id="LI_3">
Platform
<span class="trian"></span>
</li>
CSS
.trian {
width: 0;
height: 0;
border-top: 20px solid transparent;
border-bottom: 20px solid transparent;
border-right: 25px solid #fff;
position:absolute;
right:0;
top:0;
}
Add this to your css where .active is the class of the current list
[id^=UL_] > [id^=LI_].active:before{
position: absolute;
top: 0;
right: -1px; /* -1px to hide the right border */
content:'';
z-index: 1;
border-top: 20px solid transparent; /*20 = li.height /2 */
border-bottom: 20px solid transparent;
border-right: 20px solid white
}
DEMO
#DIV_1 {
box-sizing: border-box;
color: rgb(51, 51, 51);
float: left;
height: 264px;
min-height: 1px;
position: relative;
width: 169px;
perspective-origin: 84.5px 132px;
transform-origin: 84.5px 132px;
border: 0px none rgb(51, 51, 51);
font: normal normal normal normal 14px/20px 'Open Sans', sans-serif;
margin: 0px 0px 0px -15px;
outline: rgb(51, 51, 51) none 0px;
padding: 0px 15px;
}/*#DIV_1*/
#UL_2 {
box-sizing: border-box;
color: rgb(51, 51, 51);
height: 264px;
width: 139px;
perspective-origin: 69.5px 132px;
transform-origin: 69.5px 132px;
border-top: 0px none rgb(51, 51, 51);
border-right: 1px solid rgb(238, 238, 238);
border-bottom: 0px none rgb(51, 51, 51);
border-left: 0px none rgb(51, 51, 51);
font: normal normal normal normal 14px/20px 'Open Sans', sans-serif;
list-style: none outside none;
margin: 0px;
outline: rgb(51, 51, 51) none 0px;
padding: 0px;
}/*#UL_2*/
#UL_2:after {
box-sizing: border-box;
clear: both;
color: rgb(51, 51, 51);
display: table;
width: 1px;
perspective-origin: 0.5px 0px;
transform-origin: 0.5px 0px;
content: ' ';
border: 0px none rgb(51, 51, 51);
font: normal normal normal normal 14px/20px 'Open Sans', sans-serif;
list-style: none outside none;
outline: rgb(51, 51, 51) none 0px;
}/*#UL_2:after*/
#UL_2:before {
box-sizing: border-box;
color: rgb(51, 51, 51);
display: table;
width: 1px;
perspective-origin: 0.5px 0px;
transform-origin: 0.5px 0px;
content: ' ';
border: 0px none rgb(51, 51, 51);
font: normal normal normal normal 14px/20px 'Open Sans', sans-serif;
list-style: none outside none;
outline: rgb(51, 51, 51) none 0px;
}/*#UL_2:before*/
#LI_3 {
box-sizing: border-box;
color: rgb(51, 51, 51);
display: block;
height: 40px;
position: relative;
width: 139px;
perspective-origin: 69.5px 20px;
transform-origin: 69.5px 20px;
border: 0px none rgb(51, 51, 51);
font: normal normal normal normal 14px/20px 'Open Sans', sans-serif;
list-style: none outside none;
margin: 0px -1px -1px 0px;
outline: rgb(51, 51, 51) none 0px;
}/*#LI_3*/
#A_4 {
box-sizing: border-box;
color: rgb(85, 85, 85);
cursor: default;
display: block;
height: 40px;
position: relative;
text-align: left;
text-decoration: none;
width: 139px;
perspective-origin: 69.5px 20px;
transform-origin: 69.5px 20px;
background: rgb(238, 238, 238) none repeat scroll 0% 0% / auto padding-box border-box;
border: 0px none rgb(85, 85, 85);
font: normal normal normal normal 14px/20px 'Open Sans', sans-serif;
list-style: none outside none;
outline: rgb(85, 85, 85) none 0px;
padding: 10px 15px;
}/*#A_4*/
#LI_5, #LI_7, #LI_9, #LI_13 {
box-sizing: border-box;
color: rgb(51, 51, 51);
display: block;
height: 42px;
position: relative;
width: 139px;
perspective-origin: 69.5px 21px;
transform-origin: 69.5px 21px;
border: 0px none rgb(51, 51, 51);
font: normal normal normal normal 14px/20px 'Open Sans', sans-serif;
list-style: none outside none;
margin: 0px -1px -1px 0px;
outline: rgb(51, 51, 51) none 0px;
}/*#LI_5, #LI_7, #LI_9, #LI_13*/
#A_6, #A_8, #A_14 {
box-sizing: border-box;
color: rgb(51, 122, 183);
display: block;
height: 42px;
position: relative;
text-align: left;
text-decoration: none;
width: 139px;
perspective-origin: 69.5px 21px;
transform-origin: 69.5px 21px;
border: 1px solid rgba(0, 0, 0, 0);
font: normal normal normal normal 14px/20px 'Open Sans', sans-serif;
list-style: none outside none;
outline: rgb(51, 122, 183) none 0px;
padding: 10px 15px;
}/*#A_6, #A_8, #A_14*/
#A_10 {
box-sizing: border-box;
color: rgb(51, 122, 183);
display: block;
height: 42px;
position: relative;
text-align: left;
text-decoration: none;
width: 139px;
perspective-origin: 69.5px 21px;
transform-origin: 69.5px 21px;
border: 1px solid rgba(0, 0, 0, 0);
font: normal normal normal normal 14px/20px 'Open Sans', sans-serif;
list-style: none outside none;
outline: rgb(51, 122, 183) none 0px;
padding: 10px 15px;
}/*#A_10*/
#LI_11 {
box-sizing: border-box;
color: rgb(51, 51, 51);
display: block;
height: 62px;
position: relative;
width: 139px;
perspective-origin: 69.5px 31px;
transform-origin: 69.5px 31px;
border: 0px none rgb(51, 51, 51);
font: normal normal normal normal 14px/20px 'Open Sans', sans-serif;
list-style: none outside none;
margin: 0px -1px -1px 0px;
outline: rgb(51, 51, 51) none 0px;
}/*#LI_11*/
#A_12 {
box-sizing: border-box;
color: rgb(51, 122, 183);
display: block;
height: 62px;
position: relative;
text-align: left;
text-decoration: none;
width: 139px;
perspective-origin: 69.5px 31px;
transform-origin: 69.5px 31px;
border: 1px solid rgba(0, 0, 0, 0);
font: normal normal normal normal 14px/20px 'Open Sans', sans-serif;
list-style: none outside none;
outline: rgb(51, 122, 183) none 0px;
padding: 10px 15px;
}/*#A_12*/
[id=UL_2] > [id=LI_3]:before{
position: absolute;
top: 0;
right: -1px;
content:'';
z-index: 1;
border-top: 20px solid transparent;
border-bottom: 20px solid transparent;
border-right: 20px solid white
}
<div id="DIV_1">
<!-- required for floating -->
<!-- Nav tabs -->
<ul id="UL_2">
<li id="LI_3">
Platform
</li>
<li id="LI_5">
Content
</li>
<li id="LI_7">
Marketing
</li>
<li id="LI_9">
Social
</li>
<li id="LI_11">
In-app Responses
</li>
<li id="LI_13">
Systems
</li>
</ul>
</div>
I think this is a cleaner method using clip-path:
ul{
width: 160px;
border: 1px solid #ccc;
border-right: none;
list-style-type: none;
margin:0;
padding:0;
}
li a{
padding: 5px 10px;
display: block;
color: #666;
text-decoration: none;
border-right:1px solid #ccc;
}
li a:hover, li.active a{
background-color: #eee;
clip-path: polygon( 0% 0%,0% 100%,100% 100%,92% 50%,100% 0%);
}
<ul>
<li class="active">
Platform
</li>
<li>
Content
</li>
<li>
Marketing
</li>
<li>
Social
</li>
<li>
In-app Responses
</li>
<li>
Systems
</li>
</ul>
I'm trying to get li hover effect like the one on the right side bar of this page http://smokefree.gov/health-effects
as you see when you hover the background color and text color change
this is the code :
#ASIDE_1 {
box-sizing: border-box;
color: rgb(51, 51, 51);
float: left;
height: 528.171875px;
min-height: 30px;
width: 298.859375px;
perspective-origin: 149.421875px 264.078125px;
transform-origin: 149.421875px 264.078125px;
background: rgb(255, 255, 255) none repeat scroll 0% 0% / auto padding-box border-box;
border: 0px none rgb(51, 51, 51);
font: normal normal normal normal 17px/26.0399990081787px cabinregular, Arial, Helvetica, sans-serif;
margin: 13.4399995803833px 12.015625px 0px 8.3125px;
outline: rgb(51, 51, 51) none 0px;
}/*#ASIDE_1*/
#DIV_2 {
color: rgb(51, 51, 51);
height: 232px;
width: 298.859375px;
perspective-origin: 149.421875px 116px;
transform-origin: 149.421875px 116px;
border: 0px none rgb(51, 51, 51);
font: normal normal normal normal 17px/26.0399990081787px cabinregular, Arial, Helvetica, sans-serif;
outline: rgb(51, 51, 51) none 0px;
}/*#DIV_2*/
#DIV_3 {
color: rgb(51, 51, 51);
height: 232px;
width: 298.859375px;
perspective-origin: 149.421875px 116px;
transform-origin: 149.421875px 116px;
border: 0px none rgb(51, 51, 51);
font: normal normal normal normal 17px/26.0399990081787px cabinregular, Arial, Helvetica, sans-serif;
outline: rgb(51, 51, 51) none 0px;
overflow: hidden;
}/*#DIV_3*/
#IMG_4 {
color: rgb(51, 51, 51);
display: block;
height: 232px;
max-width: 100%;
vertical-align: middle;
width: 298.859375px;
perspective-origin: 149.421875px 116px;
transform-origin: 149.421875px 116px;
border: 0px none rgb(51, 51, 51);
font: normal normal normal normal 17px/26.0399990081787px cabinregular, Arial, Helvetica, sans-serif;
outline: rgb(51, 51, 51) none 0px;
}/*#IMG_4*/
#DIV_5 {
color: rgb(51, 51, 51);
height: 283.171875px;
width: 298.859375px;
perspective-origin: 149.421875px 148.078125px;
transform-origin: 149.421875px 148.078125px;
border-top: 13px solid rgb(240, 240, 240);
border-right: 0px none rgb(51, 51, 51);
border-bottom: 0px none rgb(51, 51, 51);
border-left: 0px none rgb(51, 51, 51);
font: normal normal normal normal 17px/26.0399990081787px cabinregular, Arial, Helvetica, sans-serif;
outline: rgb(51, 51, 51) none 0px;
}/*#DIV_5*/
#UL_6 {
color: rgb(84, 84, 84);
height: 283.171875px;
width: 298.859375px;
perspective-origin: 149.421875px 141.578125px;
transform-origin: 149.421875px 141.578125px;
background: rgb(255, 255, 255) none repeat scroll 0% 0% / auto padding-box border-box;
border: 0px none rgb(84, 84, 84);
font: normal normal normal normal 17px/26.0399990081787px cabinregular, Arial, Helvetica, sans-serif;
margin: 0px;
outline: rgb(84, 84, 84) none 0px;
padding: 0px;
}/*#UL_6*/
#LI_7 {
color: rgb(181, 96, 0);
height: 92.390625px;
min-height: 92.3999938964844px;
width: 283.921875px;
perspective-origin: 149.421875px 47.1875px;
transform-origin: 149.421875px 47.1875px;
background: rgb(255, 255, 255) none repeat scroll 0% 0% / auto padding-box border-box;
border-top: 0px none rgb(181, 96, 0);
border-right: 0px none rgb(181, 96, 0);
border-bottom: 2px solid rgb(240, 240, 240);
border-left: 0px none rgb(181, 96, 0);
font: normal normal normal normal 17px/20px cabinregular, Arial, Helvetica, sans-serif;
list-style: none outside none;
outline: rgb(181, 96, 0) none 0px;
padding: 0px 0px 0px 14.9375px;
}/*#LI_7*/
#A_8, #A_15, #A_22 {
color: rgb(0, 136, 204);
text-align: left;
text-decoration: none;
border: 0px none rgb(0, 136, 204);
font: normal normal normal normal 17px/20px cabinregular, Arial, Helvetica, sans-serif;
list-style: none outside none;
outline: rgb(0, 136, 204) none 0px;
}/*#A_8, #A_15, #A_22*/
#DIV_9, #DIV_16, #DIV_23 {
color: rgb(0, 136, 204);
display: inline-block;
height: 73.390625px;
text-align: left;
width: 232.8125px;
perspective-origin: 116.40625px 36.6875px;
transform-origin: 116.40625px 36.6875px;
border: 0px none rgb(0, 136, 204);
font: normal normal normal normal 17px/20px cabinregular, Arial, Helvetica, sans-serif;
list-style: none outside none;
outline: rgb(0, 136, 204) none 0px;
}/*#DIV_9, #DIV_16, #DIV_23*/
#H2_10 {
color: rgb(181, 96, 0);
height: 39px;
text-align: left;
text-rendering: optimizelegibility;
width: 220.21875px;
perspective-origin: 110.109375px 19.5px;
transform-origin: 110.109375px 19.5px;
background: rgb(255, 255, 255) none repeat scroll 0% 0% / auto padding-box border-box;
border: 0px none rgb(181, 96, 0);
font: normal normal bold normal 25px/39.0599975585938px cabinregular, Arial, Helvetica, sans-serif;
list-style: none outside none;
margin: 0px 12.5999994277954px 0px 0px;
outline: rgb(181, 96, 0) none 0px;
}/*#H2_10*/
#P_11, #P_18, #P_25 {
color: rgb(84, 84, 84);
height: 26px;
text-align: left;
width: 232.8125px;
perspective-origin: 116.40625px 13px;
transform-origin: 116.40625px 13px;
border: 0px none rgb(84, 84, 84);
font: normal normal normal normal 17px/26.0399990081787px cabinregular, Arial, Helvetica, sans-serif;
list-style: none outside none;
margin: 0px 0px 8.39999961853027px;
outline: rgb(84, 84, 84) none 0px;
}/*#P_11, #P_18, #P_25*/
#DIV_12 {
background-position: 0px 0px;
color: rgb(0, 136, 204);
float: right;
height: 35px;
text-align: left;
width: 28.390625px;
perspective-origin: 14.1875px 17.5px;
transform-origin: 14.1875px 17.5px;
background: rgba(0, 0, 0, 0) url(http://smokefree.gov/sites/all/themes/sfg/images/content/smokefree-content-page-related-link-ong-mobile-43x43.png) no-repeat scroll 0px 0px / 90% padding-box border-box;
border: 0px none rgb(0, 136, 204);
font: normal normal normal normal 17px/20px cabinregular, Arial, Helvetica, sans-serif;
list-style: none outside none;
margin: 25px 8.39999961853027px 0px 0px;
outline: rgb(0, 136, 204) none 0px;
}/*#DIV_12*/
#IMG_13, #IMG_20, #IMG_27 {
color: rgb(0, 136, 204);
height: 1px;
max-width: 100%;
text-align: left;
vertical-align: middle;
width: 1px;
perspective-origin: 0.5px 0.5px;
transform-origin: 0.5px 0.5px;
border: 0px none rgb(0, 136, 204);
font: normal normal normal normal 17px/20px cabinregular, Arial, Helvetica, sans-serif;
list-style: none outside none;
outline: rgb(0, 136, 204) none 0px;
}/*#IMG_13, #IMG_20, #IMG_27*/
#LI_14 {
color: rgb(0, 128, 171);
height: 92.390625px;
min-height: 92.3999938964844px;
width: 283.921875px;
perspective-origin: 149.421875px 47.1875px;
transform-origin: 149.421875px 47.1875px;
background: rgb(255, 255, 255) none repeat scroll 0% 0% / auto padding-box border-box;
border-top: 0px none rgb(0, 128, 171);
border-right: 0px none rgb(0, 128, 171);
border-bottom: 2px solid rgb(240, 240, 240);
border-left: 0px none rgb(0, 128, 171);
font: normal normal normal normal 17px/20px cabinregular, Arial, Helvetica, sans-serif;
list-style: none outside none;
outline: rgb(0, 128, 171) none 0px;
padding: 0px 0px 0px 14.9375px;
}/*#LI_14*/
#H2_17 {
color: rgb(0, 128, 171);
height: 39px;
text-align: left;
text-rendering: optimizelegibility;
width: 220.21875px;
perspective-origin: 110.109375px 19.5px;
transform-origin: 110.109375px 19.5px;
background: rgb(255, 255, 255) none repeat scroll 0% 0% / auto padding-box border-box;
border: 0px none rgb(0, 128, 171);
font: normal normal bold normal 25px/39.0599975585938px cabinregular, Arial, Helvetica, sans-serif;
list-style: none outside none;
margin: 0px 12.5999994277954px 0px 0px;
outline: rgb(0, 128, 171) none 0px;
}/*#H2_17*/
#DIV_19 {
background-position: 0px 0px;
color: rgb(0, 136, 204);
float: right;
height: 35px;
text-align: left;
width: 28.390625px;
perspective-origin: 14.1875px 17.5px;
transform-origin: 14.1875px 17.5px;
background: rgba(0, 0, 0, 0) url(http://smokefree.gov/sites/all/themes/sfg/images/content/smokefree-content-page-related-link-blu-mobile-43x43.png) no-repeat scroll 0px 0px / 90% padding-box border-box;
border: 0px none rgb(0, 136, 204);
font: normal normal normal normal 17px/20px cabinregular, Arial, Helvetica, sans-serif;
list-style: none outside none;
margin: 25px 8.39999961853027px 0px 0px;
outline: rgb(0, 136, 204) none 0px;
}/*#DIV_19*/
#LI_21 {
color: rgb(96, 128, 24);
height: 92.390625px;
min-height: 92.3999938964844px;
width: 283.921875px;
perspective-origin: 149.421875px 47.1875px;
transform-origin: 149.421875px 47.1875px;
background: rgb(255, 255, 255) none repeat scroll 0% 0% / auto padding-box border-box;
border-top: 0px none rgb(96, 128, 24);
border-right: 0px none rgb(96, 128, 24);
border-bottom: 2px solid rgb(240, 240, 240);
border-left: 0px none rgb(96, 128, 24);
font: normal normal normal normal 17px/20px cabinregular, Arial, Helvetica, sans-serif;
list-style: none outside none;
outline: rgb(96, 128, 24) none 0px;
padding: 0px 0px 0px 14.9375px;
}/*#LI_21*/
#H2_24 {
color: rgb(96, 128, 24);
height: 39px;
text-align: left;
text-rendering: optimizelegibility;
width: 220.21875px;
perspective-origin: 110.109375px 19.5px;
transform-origin: 110.109375px 19.5px;
background: rgb(255, 255, 255) none repeat scroll 0% 0% / auto padding-box border-box;
border: 0px none rgb(96, 128, 24);
font: normal normal bold normal 25px/39.0599975585938px cabinregular, Arial, Helvetica, sans-serif;
list-style: none outside none;
margin: 0px 12.5999994277954px 0px 0px;
outline: rgb(96, 128, 24) none 0px;
}/*#H2_24*/
#DIV_26 {
background-position: 0px 0px;
color: rgb(0, 136, 204);
float: right;
height: 35px;
text-align: left;
width: 28.390625px;
perspective-origin: 14.1875px 17.5px;
transform-origin: 14.1875px 17.5px;
background: rgba(0, 0, 0, 0) url(http://smokefree.gov/sites/all/themes/sfg/images/content/smokefree-content-page-related-link-grn-mobile-43x43.png) no-repeat scroll 0px 0px / 90% padding-box border-box;
border: 0px none rgb(0, 136, 204);
font: normal normal normal normal 17px/20px cabinregular, Arial, Helvetica, sans-serif;
list-style: none outside none;
margin: 25px 8.39999961853027px 0px 0px;
outline: rgb(0, 136, 204) none 0px;
}/*#DIV_26*/
<aside id="ASIDE_1">
<div id="DIV_2">
<div id="DIV_3">
<img alt="Male Teen" src="http://www.battalha.com/up/pic/2.1%20smoke%20effect.jpg" id="IMG_4" />
</div>
</div>
<div id="DIV_5">
<ul id="UL_6">
<li id="LI_7">
<div id="DIV_9">
<h2 id="H2_10">
Live a smokefree life
</h2>
<p id="P_11">
Discover the rewards of quitting
</p>
</div>
<div id="DIV_12">
<img alt="" src="/sites/all/themes/sfg/images/content/spacer.png" id="IMG_13" />
</div>
</li>
<li id="LI_14">
<div id="DIV_16">
<h2 id="H2_17">
Craving cigarettes?
</h2>
<p id="P_18">
Get tips for when the urge hits
</p>
</div>
<div id="DIV_19">
<img alt="" src="/sites/all/themes/sfg/images/content/spacer.png" id="IMG_20" />
</div>
</li>
<li id="LI_21">
<div id="DIV_23">
<h2 id="H2_24">
Quitting today?
</h2>
<p id="P_25">
Review steps for your quit day
</p>
</div>
<div id="DIV_26">
<img alt="" src="/sites/all/themes/sfg/images/content/spacer.png" id="IMG_27" />
</div>
</li>
</ul>
</div>
</aside>
If you look into the source of the page you linked to, the CSS rules that are being applied that change the background color and text color are as follows:
.li-first:hover,
.li-first:hover H2,
.li-first:hover A,
.li-first:hover A:visited H2 {
background:none repeat scroll 0 0 #b56000;
color:#ffffff;
}
...
.li-second:hover,
.li-second:hover H2,
.li-second:hover A,
.li-second:hover A:visited H2 {
background: none repeat scroll 0 0 #0080ab;
color: #ffffff;
}
...
.li-third:hover,
.li-third:hover H2,
.li-third:hover A,
.li-third:hover A:visited H2 {
background: none repeat scroll 0 0 #608018;
color: #ffffff;
}
So what's actually happening is the li element itself is having its background color changed (to a different color for each of the three li elements), and the descendent elements that have text content are having both their background color and text color changed as well (text to white).
You can apply the same design to your code, taking into account the differences between your code and the site code:
#LI_7:hover, #LI_7:hover h2, #LI_7:hover p { background-color:#b56000; color:#ffffff; }
#LI_14:hover, #LI_14:hover h2, #LI_14:hover p { background-color:#0080ab; color:#ffffff; }
#LI_21:hover, #LI_21:hover h2, #LI_21:hover p { background-color:#608018; color:#ffffff; }
http://jsfiddle.net/9juf1nLf/
Edit: Sorry, I didn't notice that the image had changed! After some investigation, this is the CSS rule that's changing the image:
.li-first:hover .image-note,
.li-second:hover .image-note,
.li-third:hover .image-note {
background: url("../images/content/smokefree-content-page-related-link-ro-mobile-43x43.png") no-repeat scroll 0 0 / 90% auto transparent;
}
So what's happening is that they're replacing the entire image with an alternative one when you hover over the li. It's also a bit strange, as the .image-note class is actually being applied to a div that contains an img element. The img element is just applying a blank spacer, while the div is actually showing the visible image as its background image.
Also interesting is that they're using the exact same hover image for all three lis. This works because although the image needs to be colored differently when you're not hovering over it, when you are hovering over it, it's just the same plain white image for all three lis.
For comparison, here's the first colored image compared to the common white image:
http://smokefree.gov/sites/all/themes/sfg/images/content/smokefree-content-page-related-link-ong-mobile-43x43.png
http://smokefree.gov/sites/all/themes/sfg/images/content/smokefree-content-page-related-link-ro-mobile-43x43.png
Anyway, you can apply this to your code as well with the following:
#LI_7:hover #DIV_12, #LI_14:hover #DIV_19, #LI_21:hover #DIV_26 { background-image:url('http://smokefree.gov/sites/all/themes/sfg/images/content/smokefree-content-page-related-link-ro-mobile-43x43.png'); }
http://jsfiddle.net/9juf1nLf/2/
From Chrome's 'inspect element' it would appear that the list is using CSS :hover selector.
.li_foo:hover {
background: #B56000;color: #FFFFFF;}
More info: http://www.w3schools.com/cssref/sel_hover.asp