I am trying to get the same effect for my tab which is in this site.
Here is what i tried: JsFiddle
I am unable to get the desired effect.
Can somebody tell me what am i missing.
.mytabs a {
display: block;
height: 24px;
text-decoration: none;
border: 1px solid rgba(0, 0, 0, 0);
border-bottom: 1px solid #CCC;
}
.mytabs a:hover {
border: 1px solid #CCC;
border-bottom-color: #FFF;
}
a.youarehere {
border: 1px solid #ccc;
border-bottom-color: #fff;
height: 30px;
}
FIDDLE
HTML
<div class="tabs-container">
<nav class="mytabs">
<ul>
<li><a class="youarehere" href="#">Menu 1</a></li>
<li>Menu 2</li>
<li>Menu 3</li>
</ul>
</nav>
</div>
CSS
.tabs-container{
border-bottom: 1px solid #cccccc;
height: 34px;
clear: both;
margin-bottom: 15px;
}
.mytabs ul {
list-style: none;
padding: 0;
margin: 0;
}
.mytabs ul li {
display: inline-block;
}
.mytabs a {
border: 1px solid transparent;
color: #777;
display: block;
float: left;
font-size: 90%;
height: 24px;
line-height: 20px;
margin: 9px 8px 0 0;
padding: 0 11px 0 11px;
text-decoration: none;
border-bottom: 1px solid #ccc;
}
.mytabs a:hover {
border: 1px solid #ccc;
}
.mytabs a.youarehere {
background: #fff;
border: 1px solid #ccc;
border-bottom-color: #ffffff;
color: black;
font-size: 120%;
height: 30px;
line-height: 28px;
margin-top: 3px;
padding: 0px 11px 0px 11px;
}
Related
I want to put my active list-item go over my border-bottom. Z-index didn't work, I think that that's the case due to the position of the list-items. Do you know how to help me?
Current situation:
.meer_info_ul {
list-style-type: none;
margin: 0;
padding: 0;
overflow: hidden;
background-color: #fff;
border-bottom: 1px solid #98ab39;
margin-bottom: 100px;
text-align: center;
}
.meer_info_li{
display: inline-block;
transform: translate(0, 7px);
}
.meer_info_li a {
display: block;
color: #000;
text-align: center;
padding: 10px 16px;
text-decoration: none;
border-radius: 10px;
cursor: pointer;
}
.active, .meer_info_li a:hover:not(.active){
border-right: 1px solid #98ab39;
border-left: 1px solid #98ab39;
border-top: 1px solid #98ab39;
}
<ul class="meer_info_ul">
<li class="meer_info_li">Home</li>
<li class="meer_info_li"><a class="active" href="#news">News</a></li>
<li class="meer_info_li">Contact</li>
<li class="meer_info_li">About</li>
</ul>
Perfect Situation:
Kindregards,
MarioMartin
If you remove overflow: hidden from the <ul> container and add a white border-bottom to your active list element, you can just shift the list element down 1 pixel so it covers the bottom line. Note that I also had to update the border-radius to use border-top-radius and border-bottom-radius. Another improvement is that you should always set the border-width of your list element to 1px to prevents the tabs from changing size. You can set their color to transparent to hide them (see: 1px solid transparent).
.meer_info_ul {
list-style-type: none;
margin: 0;
padding: 0;
background-color: #fff;
border-bottom: 1px solid #98ab39;
margin-bottom: 100px;
text-align: center;
}
.meer_info_li{
display: inline-block;
margin-bottom: -1px;
}
.meer_info_li a {
display: block;
border: 1px solid transparent;
color: #000;
text-align: center;
padding: 10px 16px;
text-decoration: none;
border-top-left-radius: 10px;
border-top-right-radius: 10px;
cursor: pointer;
}
.meer_info_li a.active, .meer_info_li a:hover {
border: 1px solid #98ab39;
border-bottom: 1px solid #fff;
}
<ul class="meer_info_ul">
<li class="meer_info_li">Home</li>
<li class="meer_info_li"><a class="active" href="#news">News</a></li>
<li class="meer_info_li">Contact</li>
<li class="meer_info_li">About</li>
</ul>
A way to hack around a similar result.
.meer_info_ul {
position: relative;
list-style-type: none;
margin: 0;
padding: 0;
overflow: hidden;
background-color: #fff;
margin-bottom: 100px;
text-align: center;
}
.meer_info_ul:before {
content: '';
position: absolute;
bottom: 0;
left: 0;
right: 0;
border-bottom: 1px solid #98ab39;
}
.meer_info_li{
display: inline-block;
transform: translate(0, 7px);
}
.meer_info_li a {
position: relative;
display: block;
color: #000;
text-align: center;
padding: 10px 16px;
text-decoration: none;
border-radius: 10px;
cursor: pointer;
border: 1px solid transparent;
}
.meer_info_li a.active,
.meer_info_li a:hover:not(.active){
border-right: 1px solid #98ab39;
border-left: 1px solid #98ab39;
border-top: 1px solid #98ab39;
}
.meer_info_li a.active {
z-index: 3;
background-color: white;
}
<ul class="meer_info_ul">
<li class="meer_info_li">Home</li>
<li class="meer_info_li"><a class="active" href="#news">News</a></li>
<li class="meer_info_li">Contact</li>
<li class="meer_info_li">About</li>
</ul>
The bootstrap way to manage a similar result.
.meer_info_ul {
position: relative;
list-style-type: none;
margin: 0;
padding: 0;
background-color: #fff;
margin-bottom: 100px;
text-align: center;
border-bottom: 1px solid #98ab39;
}
.meer_info_li{
display: inline-block;
margin-bottom: -1px;
}
.meer_info_li a {
display: block;
color: #000;
text-align: center;
padding: 10px 16px;
text-decoration: none;
cursor: pointer;
border: 1px solid transparent;
}
.meer_info_li a.active,
.meer_info_li a:hover:not(.active){
border-color: #98ab39 #98ab39 #fff;
background-color: white;
border-top-left-radius: 10px;
border-top-right-radius: 10px;
}
<ul class="meer_info_ul">
<li class="meer_info_li">Home</li>
<li class="meer_info_li"><a class="active" href="#news">News</a></li>
<li class="meer_info_li">Contact</li>
<li class="meer_info_li">About</li>
</ul>
I hope this helps.
I'm learning CSS / HTML and I have a problem with creating a nav.
ul {
list-style-type: none;
margin: 0;
padding: 0;
text-align: center;
border-top: 1px solid #000000;
border-bottom: 1px solid #000000;
}
li {
display: inline-block;
padding: 15px 20px;
margin: 0;
height: 35px;
}
li:hover {
background-color: #232323;
border-bottom: 3px solid #e24a4a;
height: 32px;
cursor: pointer;
}
<nav>
<ul>
<li>M1</li>
<li>M2</li>
<li>M3</li>
<li>M4</li>
<li>M5</li>
</ul>
</nav>
Between M's is margin. I don't want it. I tried remove them, but nothing.
Margin between M's
How can I remove it?
I think you need something this.
ul {
list-style-type: none;
margin: 0;
padding: 0;
text-align: center;
border-top: 1px solid #000000;
border-bottom: 1px solid #000000;
}
li {
padding: 15px 0;
display: inline-block;
margin: 0;
height: 35px;
}
li:hover {
padding: 15px 20px;
background-color: #232323;
border-bottom: 3px solid #e24a4a;
height: 32px;
cursor: pointer;
}
<nav>
<ul>
<li>M1</li>
<li>M2</li>
<li>M3</li>
<li>M4</li>
<li>M5</li>
</ul>
</nav>
Read the details given in the link that CBroe posted... Will provide you with the solutions. In my opinion both the "flexbox" and the "negative margin" solutions are pretty good tricks.
Here you go:
ul {
list-style-type: none;
margin: 0;
padding: 0;
text-align: center;
border-top: 1px solid #000000;
border-bottom: 1px solid #000000;
}
li {
display: inline-block;
padding: 15px 20px;
margin-right: -4px; /* negative margin */
height: 35px;
}
li:hover {
background-color: #232323;
border-bottom: 3px solid #e24a4a;
height: 32px;
cursor: pointer;
}
<nav>
<ul>
<li>M1</li>
<li>M2</li>
<li>M3</li>
<li>M4</li>
<li>M5</li>
</ul>
</nav>
I'm trying to create this price column, and have been modifying the code of a tutorial, and everything was going fine until I added a border to .price section of it. The border added some extra width to the element, but only on the right side. I tried to see if another div was the reason, or some forgotten about margin/padding values with Chrome Dev Tools, but I can't see anything.
I would really appreciate any help with finding out what is causing the extra width to .price div
Here is the html:
<ul class="pricing_table">
<li></li>
<li class="price_block">
<h3>Web Development</h3>
<div class="price">
<div class="price_figure">
<span class="price_number">$9.99</span>
<span class="price_tenure">per month</span>
</div>
</div>
<ul class="features">
<li>2GB Storage</li>
<li>5 Clients</li>
<li>10 Active Projects</li>
<li>Free Goodies</li>
<li>24/7 Email support</li>
</ul>
<div class="buynow">
Buy Now
</div>
</li>
</ul>
Here is the CSS:
* {
margin: 0;
padding: 0;
}
li {
list-style:none;
}
body {
font-family: roboto;
}
h3 {
font-family: lato;
}
.pricing_table {
line-height: 150%;
font-size: 20px;
margin: 0 auto;
width: 75%;
max-width: 400px;
padding-top: 10px;
margin-top: 100px;
}
.price_block, .price_block_blue {
width: 100%;
color: black;
background-color: white;
float: left;
list-style-type: none;
transition: all 0.25s;
position: relative;
box-sizing: border-box;
margin-bottom: 10px;
}
.pricing_table h3 {
text-transform: uppercase;
padding: 5px 0;
background: white;
margin: -10px 0 0 0;
text-align: center;
border: 3px solid black;
border-bottom: 0px solid transparent;
}
.price {
display: table;
background: red;
width: 100%;
margin: 0;
padding: 0;
height: 70px;
text-align: center;
border: 3px solid black;
border-top:0px solid black;
border-bottom:0px solid black;
}
.price_blue {
display: table;
background: blue;
width: 100%;
height: 70px;
text-align: center;
}
.price_figure {
font-size: 24px;
text-transform: uppercase;
vertical-align: middle;
display: table-cell;
}
.price_number {
font-weight: bold;
padding: 10px 0 0 0;
display: block;
}
.price_tenure {
font-size: 11px;
}
.features {
background: #fff;
color: #000;
text-align: center;
border: 3px solid black;
border-bottom: 0px solid transparent;
border-top: 0px solid transparent;
}
.features li {
padding: 8px 15px;
border-bottom: 1px solid #ccc;
font-size: 11px;
list-style-type: none;
}
.buynow {
padding: 15px;
background: white;
text-align: center;
border: 3px solid black;
border-top: 0px solid black;
}
.action_button {
text-decoration: none;
color: white;
font-weight: bold;
border-radius: 5px;
background: red;
padding: 5px 20px;
font-size: 11px;
text-transform: uppercase;
}
.price_block:hover,.price_block_blue:hover {
box-shadow: 0 0 0px 5px rgba(0, 0, 0, 0.5);
transform: scale(1.04) translateY(-5px);
z-index: 1;
border-bottom: 0 none;
}
.price_block:hover .price {
background: yellow;
/*box-shadow: inset 0 0 45px 1px #ADD8E6;*/
}
.price_block_blue:hover .price_blue {
background: yellow;
}
.price_block:hover h3{
background: black;
color: white;
}
.price_block_blue:hover h3 {
background: black;
color: white;
}
.price_block:hover .action_button, .price_block_blue:hover .action_button {
background: linear-gradient(#F9B84A, #DB7224);
}
Since you are adding a border, it gets added to your overall width. So the actual width of .price is 100% + 3px (left border) + 3px (right border). To have the total width include padding and borders, use box-sizing:
.price {
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
I'm making a breadcrumb menu and attempting to do it in pure CSS so I don't have to use a background image to get an arrow shape. Is it possible to achieve this angled border style with pure CSS?
The best I have been able to do looks like this (this is just a draft screenshot I made a while ago, so please disregard that it implies that breadcrumbs are fruits and/or delicious):
I was achieving it using CSS like this:
.breadcrumb li {
border-right: 2px solid #ECECEC;
border-top-right-radius: 40px;
border-bottom-right-radius: 40px;
}
Here's the whole CSS in case it helps:
div.breadcrumb {
display: block;
float: left;
border-bottom: 2px solid gray;
}
ul.breadcrumb {
display: block;
float: left;
list-style-type: none;
margin: 0px 0px 0px 0px;
padding: 0px 0px 0px 0px;
}
.breadcrumb li {
float: left;
display: list-item;
background-color: #F2F2F2;
border-right: 2px solid #ECECEC;
border-top-right-radius: 40px;
border-bottom-right-radius: 40px;
position: relative;
padding: 9px 20px 10px 35px;
margin-left: -32px;
}
.breadcrumb li.first-crumb {
background: #E7E7E7;
padding-left: 20px;
margin-left: 0px;
}
.breadcrumb li.last-crumb {
border-top: 1px solid #E3E3E3;
border-right: 1px solid #E3E3E3;
background: white;
padding-top: 9px;
padding-bottom: 9px;
border-top-right-radius: 0px;
border-bottom-right-radius: 0px;
}
.breadcrumb li:not(.first-crumb) {
padding-left: 45px;
}
.breadcrumb li:not(.last-crumb) a:after {
content: "\27F6";
margin-left: 10px;
color: #444444;
margin-right: 0px;
}
.breadcrumb li a,
.breadcrumb li span {
display: block;
float: left;
position: relative;
}
.breadcrumb li a {
text-decoration: none;
}
.breadcrumb li.first-crumb a {
padding-left: 0px;
margin-left: 0px;
}
My markup looks like this:
<div class="breadcrumb">
<ul class="breadcrumb">
<li class="breadcrumb first-crumb">Produce</li>
<li class="breadcrumb">Fruits</li>
<li class="breadcrumb last-crumb"><span>breadcrumb-ilicious!</span></li>
</ul>
</div>
Edit: It would be nice if I could get it to look like there's an actual border too. This is my crude skitch of it:
(I tried adding several triangles per Olaf's suggestion and the only thing I couldn't get to work was correcting the obvious gap between two triangles without changing the angle of the triangle poking out to form the border.)
Stealing from CSS Tricks - CSS Triangle, you can do something like
li.breadcrumb:after {
content: "";
display: inline-block;
width: 0;
height: 0;
border-top: 20px solid #eee;
border-bottom: 20px solid #eee;
border-left: 20px solid #ccc;
}
li.breadcrumb:after {
content: "";
display: inline-block;
width: 0;
height: 0;
border-top: 20px solid #eee;
border-bottom: 20px solid #eee;
border-left: 20px solid #ccc;
}
li.first-crumb:after {
border-top: 20px solid #ccc;
border-bottom: 20px solid #ccc;
border-left: 20px solid #aaa;
}
li.last-crumb:after {
border-top: 20px solid #fff;
border-bottom: 20px solid #fff;
border-left: 20px solid #eee;
}
li.breadcrumb {
list-style-type: none;
background-color: #ccc;
display: inline-block;
float: left;
line-height: 0;
}
li.first-crumb {
background: #aaa;
}
li.last-crumb {
background: #eee;
}
li.breadcrumb a {
text-decoration: none;
}
<div class="breadcrumb">
<ul class="breadcrumb">
<li class="breadcrumb first-crumb">Hurr
</li>
<li class="breadcrumb">Durr
</li>
<li class="breadcrumb last-crumb"><span>Furr</span>
</li>
</ul>
</div>
<div class="arrow-right"></div>
Original JSFiddle
you can get those borders too if you want (I have improved the previous answer by Olaf Dietsche):
HTML:
<div class="breadcrumb">
<ul class="breadcrumb">
<li class="breadcrumb first-crumb">Hurr</li>
<li class="breadcrumb">Durr</li>
<li class="breadcrumb last-crumb"><span>Furr</span></li>
</ul>
</div>
CSS:
li.breadcrumb:before {
content:'';
width: 28.28427px; /* sqrt(40*40 / 2) */
height: 28.28427px;
background:transparent;
position:absolute;
-moz-transform:rotate(45deg);
-webkit-transform:rotate(45deg);
transform:rotate(45deg);
transform-origin: top right;
top: 20px;
margin:0;
right: 0;
border-right: #000 solid 1px;
border-top: #000 solid 1px;
}
li.breadcrumb:after {
content: "";
display: inline-block;
width: 0;
height: 0;
border-top: 20px solid #eee;
border-bottom: 20px solid #eee;
border-left: 20px solid #ccc;
}
li.first-crumb:after {
border-top: 20px solid #ccc;
border-bottom: 20px solid #ccc;
border-left: 20px solid #aaa;
}
li.last-crumb:after {
border-top: 20px solid #fff;
border-bottom: 20px solid #fff;
border-left: 20px solid #eee;
}
li.breadcrumb {
list-style-type: none;
background-color: #ccc;
display: inline-block;
float: left;
line-height: 0;
position: relative;
height: 40px;
}
li.first-crumb {
background: #aaa;
}
li.last-crumb {
background: #eee;
}
li.breadcrumb a {
text-decoration: none;
}
and the fiddle: http://jsfiddle.net/piotku/9cs1zy4h/
Another way to do it is to use an :after element and make this a rectangle with two borders and rotate this.
Here is an example: Breadcrumb
Main CSS:
li-item:after {
content: "";
width: 5rem;
height: 100%;
display: inline-block;
position: absolute;
background: transparent;
right: 0;
top: 0;
transform: translateX(-1rem) rotate(45deg);
border-right: 4px solid white;
border-top: 4px solid white;
}
I'm trying to figure out why my tabs look fine in webkit based browsers, and even IE7+. For some reason, they look wonky in Mozilla. Can anyone give me some tips to fix this?
Here is an example: http://jsbin.com/icomo4
Here is the css:
<style type="text/css">
ul#activity-tabs {
text-align: right;
border-bottom: 1px solid #cccccc;
list-style-type: none;
padding: 3px 10px 3px 10px;
}
ul#activity-tabs li {
display: inline;
}
ul#activity-tabs li.tab1 {
background-color: #fff;
}
ul#activity-tabs li.tab1 a {
padding: 3px 4px;
border: 1px solid #cccccc;
background-color: #fff;
color: #333333;
position: relative;
top: 1px;
margin-right: 0px;
text-decoration: none;
border-bottom: none;
padding-top: 4px;
}
ul#activity-tabs li.tab1 a:hover {
background: #fff;
}
ul#activity-tabs li.tab2 {
background-color: #fff;
}
ul#activity-tabs li.tab2 a {
padding: 3px 4px;
background-color: #fff;
color: #333333;
margin-right: 0px;
text-decoration: none;
border-bottom: none;
padding-top: 4px;
}
ul#activity-tabs li.tab2 a:hover {
padding: 3px;
border-top: 1px solid #cccccc;
border-left: 1px solid #cccccc;
border-right: 1px solid #cccccc;
}
</style>
The html:
<ul id="activity-tabs">
<li class="tab1">Tab 1</li>
<li class="tab2">Tab 2</li>
</ul>
Any help would be greatly appreciated. Thanks!
That's how they look in my Firefox 3.6.10