admin管理员组文章数量:1208153
I'm unable to add border-radius to entire dropdown menu, If I add border-radius to click-nav ul li
then radius applying to list items. I have added border-radius to .click-nav ul
but radius not applied to entire dropdown menu.
$(function () {
$('.click-nav > ul').toggleClass('no-js js');
$('.click-nav .js ul').hide();
$('.click-nav .js').click(function(e) {
$('.click-nav .js ul').slideToggle(200);
$('.clicker').toggleClass('active');
e.stopPropagation();
});
$(document).click(function() {
if ($('.click-nav .js ul').is(':visible')) {
$('.click-nav .js ul', this).slideUp();
$('.clicker').removeClass('active');
}
});
});
body{background:#000}
.click-nav {width:200px;}
.click-nav ul {position:relative;}
.click-nav ul li {position:relative;list-style:none;cursor:pointer;}
.click-nav ul li ul {position:absolute;left:0;right:0;margin:5px 0px 0px -40px;}
.arrow-up {
width: 0;
height: 0;
border-left: 10px solid transparent;
border-right: 10px solid transparent;
border-bottom: 10px solid white;
margin-left:30px;
}
.click-nav ul .clicker {position:relative;border:2px solid #fff;color:#fff;border-radius:6px;background-color: rgba(255,255,255,0);width:70px;}
.click-nav ul .clicker:hover,.click-nav ul .active {background-color: rgba(255,255,255,0.2);width:70px;}
.click-nav ul li a {
background:#fff;transition:background-color 0.2s ease-in-out;
-webkit-transition:background-color 0.2s ease-in-out;
-moz-transition:background-color 0.2s ease-in-out;
display:block;
padding:6px 10px 6px 10px;color:#333;text-decoration:none;}
.click-nav ul li a:hover {background-color: rgba(214,247,255,1); }
.click-nav .no-js ul {display:none;}
.click-nav .no-js:hover ul {display:block;}
<script src=".8.3.js"></script><div class="click-nav">
<ul class="no-js">
<li>
<a href="#" class="clicker">Categories</a>
<ul>
<li><div class="arrow-up"></div></li>
<li><a href="#">Dashboard</a></li>
<li><a href="#">Settings</a></li>
<li><a href="#">Privacy</a></li>
<li><a href="#">Help</a></li>
<li><a href="#">Sign out</a></li>
</ul>
</li>
</ul>
</div>
I'm unable to add border-radius to entire dropdown menu, If I add border-radius to click-nav ul li
then radius applying to list items. I have added border-radius to .click-nav ul
but radius not applied to entire dropdown menu.
$(function () {
$('.click-nav > ul').toggleClass('no-js js');
$('.click-nav .js ul').hide();
$('.click-nav .js').click(function(e) {
$('.click-nav .js ul').slideToggle(200);
$('.clicker').toggleClass('active');
e.stopPropagation();
});
$(document).click(function() {
if ($('.click-nav .js ul').is(':visible')) {
$('.click-nav .js ul', this).slideUp();
$('.clicker').removeClass('active');
}
});
});
body{background:#000}
.click-nav {width:200px;}
.click-nav ul {position:relative;}
.click-nav ul li {position:relative;list-style:none;cursor:pointer;}
.click-nav ul li ul {position:absolute;left:0;right:0;margin:5px 0px 0px -40px;}
.arrow-up {
width: 0;
height: 0;
border-left: 10px solid transparent;
border-right: 10px solid transparent;
border-bottom: 10px solid white;
margin-left:30px;
}
.click-nav ul .clicker {position:relative;border:2px solid #fff;color:#fff;border-radius:6px;background-color: rgba(255,255,255,0);width:70px;}
.click-nav ul .clicker:hover,.click-nav ul .active {background-color: rgba(255,255,255,0.2);width:70px;}
.click-nav ul li a {
background:#fff;transition:background-color 0.2s ease-in-out;
-webkit-transition:background-color 0.2s ease-in-out;
-moz-transition:background-color 0.2s ease-in-out;
display:block;
padding:6px 10px 6px 10px;color:#333;text-decoration:none;}
.click-nav ul li a:hover {background-color: rgba(214,247,255,1); }
.click-nav .no-js ul {display:none;}
.click-nav .no-js:hover ul {display:block;}
<script src="https://code.jquery.com/jquery-1.8.3.js"></script><div class="click-nav">
<ul class="no-js">
<li>
<a href="#" class="clicker">Categories</a>
<ul>
<li><div class="arrow-up"></div></li>
<li><a href="#">Dashboard</a></li>
<li><a href="#">Settings</a></li>
<li><a href="#">Privacy</a></li>
<li><a href="#">Help</a></li>
<li><a href="#">Sign out</a></li>
</ul>
</li>
</ul>
</div>
Share
Improve this question
asked Aug 8, 2015 at 20:36
PrimePrime
3,6255 gold badges32 silver badges47 bronze badges
0
5 Answers
Reset to default 7Try adding a class to the first and last list elements...
css
.first a {
border-top-left-radius: 10px;
border-top-right-radius: 10px;
}
.last a{
border-bottom-left-radius: 10px;
border-bottom-right-radius: 10px;
}
html
<ul>
<li><div class="arrow-up"></div></li>
<li class="first"><a href="#">Dashboard</a></li>
<li><a href="#">Settings</a></li>
<li><a href="#">Privacy</a></li>
<li><a href="#">Help</a></li>
<li class="last"><a href="#">Sign out</a></li>
</ul>
Demo: http://jsfiddle.net/vp9eykne
Your border-radius
is being set, just now shown properly. If you take a look at this code, I have added the radius and set the background-color: red;
. Here you will see the positioning of the second ul
and how the radius is being displayed.
To get around the issue, you could add classes or pseudo-classes for the first (well, second technically) and last elements of the list.
.click-nav ul li ul li:nth-child(2) a {
border-top-left-radius: 5px;
border-top-right-radius: 5px;
}
.click-nav ul li ul li:last-child a {
border-bottom-left-radius: 5px;
border-bottom-right-radius: 5px;
}
Here is a link to the working version. If you'd rather not use the pseudo-classes, recode your dropdown as to not have the top arrow part of the inside ul
and the margin
not pushed so far over.
When you add a border-radius
property to list ( ul ) you cannot see anything.
You have to add overflow: hidden
too. Also ul's default padding left value causes a problem for you. You have to fix it, add padding-left: 0
too. And lastly your arrow causes a border-radius-top problem. You have to add border-radius to second li of a list.
You can see my fiddle, i've done it.
http://jsfiddle.net/naufu5hk/3/
You menu is made of <li> elements so you weill have to add border radius to the first and last <li> element.
But you don't add background to the li element (probably easier?) So you have to select the menu: css selector for the li element:
ul li:first-of-type { ... }
What you do is add the background to the li elements child so:
ul li:first-of-type *:first-of-type { ... }
And we need the end so we the last element but its child:
ul li:last-of-type *:last-of-type { ... }
$(function() {
$('.click-nav > ul').toggleClass('no-js js');
$('.click-nav .js ul').hide();
$('.click-nav .js').click(function(e) {
$('.click-nav .js ul').slideToggle(200);
$('.clicker').toggleClass('active');
e.stopPropagation();
});
$(document).click(function() {
if ($('.click-nav .js ul').is(':visible')) {
$('.click-nav .js ul', this).slideUp();
$('.clicker').removeClass('active');
}
});
});
body {
background: #000
}
.click-nav {
width: 200px;
}
.click-nav ul {
position: relative;
}
.click-nav ul li {
position: relative;
list-style: none;
cursor: pointer;
}
.click-nav ul li ul {
position: absolute;
left: 0;
right: 0;
margin: 5px 0px 0px -40px;
}
.arrow-up {
width: 0;
height: 0;
border-left: 10px solid transparent;
border-right: 10px solid transparent;
border-bottom: 10px solid white;
margin-left: 30px;
}
.click-nav ul .clicker {
position: relative;
border: 2px solid #fff;
color: #fff;
border-radius: 6px;
background-color: rgba(255, 255, 255, 0);
width: 70px;
}
.click-nav ul .clicker:hover,
.click-nav ul .active {
background-color: rgba(255, 255, 255, 0.2);
width: 70px;
}
.click-nav ul li a {
background: #fff;
transition: background-color 0.2s ease-in-out;
-webkit-transition: background-color 0.2s ease-in-out;
-moz-transition: background-color 0.2s ease-in-out;
display: block;
padding: 6px 10px 6px 10px;
color: #333;
text-decoration: none;
}
.click-nav ul li a:hover {
background-color: rgba(214, 247, 255, 1);
}
.click-nav .no-js ul {
display: none;
}
.click-nav .no-js:hover ul {
display: block;
}
.menu li:first-of-type *:first-of-type {
border-top-left-radius: 7px;
border-top-right-radius: 7px;
}
.menu li:last-of-type *:last-of-type {
border-bottom-left-radius: 7px;
border-bottom-right-radius: 7px
}
<script src="https://code.jquery.com/jquery-1.8.3.js"></script>
<div class="click-nav">
<ul class="no-js">
<li>
<a href="#" class="clicker">Categories</a>
<ul class="menu">
<li>
<div class="arrow-up"></div>
<a href="#">Dashboard</a>
</li>
<li><a href="#">Settings</a>
</li>
<li><a href="#">Privacy</a>
</li>
<li><a href="#">Help</a>
</li>
<li><a href="#">Sign out</a>
</li>
</ul>
</li>
</ul>
</div>
Try utilizing selector .click-nav ul .clicker + ul li:nth-of-type(2) a
to select first li a
element following .click-nav ul .clicker
element , set border-top-left-radius
, border-top-right-radius
to 6px
; .click-nav ul .clicker + ul li:nth-last-of-type(1) a
to select last li a
following .click-nav ul .clicker
, set border-bottom-left-radius
, border-bottom-right-radius
to 6px
.click-nav ul .clicker + ul li:nth-of-type(2) a {
border-top-left-radius: 6px;
border-top-right-radius: 6px;
border-bottom-right-radius: 0px;
border-bottom-left-radius: 0px;
}
.click-nav ul .clicker + ul li:nth-last-of-type(1) a {
border-bottom-left-radius: 0px;
border-bottom-right-radius: 0px;
border-bottom-right-radius: 6px;
border-bottom-left-radius: 6px;
}
$(function() {
$('.click-nav > ul').toggleClass('no-js js');
$('.click-nav .js ul').hide();
$('.click-nav .js').click(function(e) {
$('.click-nav .js ul').slideToggle(200);
$('.clicker').toggleClass('active');
e.stopPropagation();
});
$(document).click(function() {
if ($('.click-nav .js ul').is(':visible')) {
$('.click-nav .js ul', this).slideUp();
$('.clicker').removeClass('active');
}
});
});
body {
background: #000
}
.click-nav {
width: 200px;
}
.click-nav ul {
position: relative;
}
.click-nav ul li {
position: relative;
list-style: none;
cursor: pointer;
}
.click-nav ul li ul {
position: absolute;
left: 0;
right: 0;
margin: 5px 0px 0px -40px;
}
.arrow-up {
width: 0;
height: 0;
border-left: 10px solid transparent;
border-right: 10px solid transparent;
border-bottom: 10px solid white;
margin-left: 30px;
}
.click-nav ul .clicker + ul li:nth-of-type(2) a {
border-top-left-radius: 6px;
border-top-right-radius: 6px;
border-bottom-right-radius: 0px;
border-bottom-left-radius: 0px;
}
.click-nav ul .clicker + ul li:nth-last-of-type(1) a {
border-bottom-left-radius: 0px;
border-bottom-right-radius: 0px;
border-bottom-right-radius: 6px;
border-bottom-left-radius: 6px;
}
.click-nav ul .clicker {
position: relative;
border: 2px solid #fff;
color: #fff;
border-radius: 6px;
background-color: rgba(255, 255, 255, 0);
width: 70px;
}
.click-nav ul .clicker:hover,
.click-nav ul .active {
background-color: rgba(255, 255, 255, 0.2);
width: 70px;
}
.click-nav ul li a {
background: #fff;
transition: background-color 0.2s ease-in-out;
-webkit-transition: background-color 0.2s ease-in-out;
-moz-transition: background-color 0.2s ease-in-out;
display: block;
padding: 6px 10px 6px 10px;
color: #333;
text-decoration: none;
}
.click-nav ul li a:hover {
background-color: rgba(214, 247, 255, 1);
}
.click-nav .no-js ul {
display: none;
}
.click-nav .no-js:hover ul {
display: block;
}
<script src="https://code.jquery.com/jquery-1.8.3.js"></script>
<div class="click-nav">
<ul class="no-js">
<li>
<a href="#" class="clicker">Categories</a>
<ul>
<li>
<div class="arrow-up"></div>
</li>
<li><a href="#">Dashboard</a>
</li>
<li><a href="#">Settings</a>
</li>
<li><a href="#">Privacy</a>
</li>
<li><a href="#">Help</a>
</li>
<li><a href="#">Sign out</a>
</li>
</ul>
</li>
</ul>
</div>
本文标签: javascripthow to add borderradius to dropdown menuStack Overflow
版权声明:本文标题:javascript - how to add border-radius to dropdown menu - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1738757180a2110738.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论