我有以下代码
div {
width:200px;
border-bottom:1px solid magenta;
height:50px;
}
div宽度为200px,因此border-bottom也是200px,但是如果我希望border-bottom-bottom仅100px而又不更改div宽度,该怎么办?
我有以下代码
div {
width:200px;
border-bottom:1px solid magenta;
height:50px;
}
div宽度为200px,因此border-bottom也是200px,但是如果我希望border-bottom-bottom仅100px而又不更改div宽度,该怎么办?
Answers:
您可以使用伪元素。例如
div {
width : 200px;
height : 50px;
position: relative;
z-index : 1;
background: #eee;
}
div:before {
content : "";
position: absolute;
left : 0;
bottom : 0;
height : 1px;
width : 50%; /* or 100px */
border-bottom:1px solid magenta;
}
<div>Item 1</div>
<div>Item 2</div>
无需出于演示目的使用额外的标记。IE8也支持:after。
编辑:
如果你需要一个右对齐边框,只是改变left: 0
与right: 0
如果您需要居中对齐的边框,只需设置 left: 50px;
left: 25%
为25%+ 50%+ 25%
margin: auto
,right: 0
,left: 0
在:before
到中心的直线。如果有帮助,请支持。
另一种方法(在现代浏览器中)是使用负扩散盒阴影。查看此更新的小提琴:http : //jsfiddle.net/WuZat/290/
box-shadow: 0px 24px 3px -24px magenta;
我认为最安全,最兼容的方式是上面接受的答案。只是以为我会分享另一种技术。
您可以使用线性渐变:
div {
width:100px;
height:50px;
display:block;
background-image: linear-gradient(to right, #000 1px, rgba(255,255,255,0) 1px), linear-gradient(to left, #000 0.1rem, rgba(255,255,255,0) 1px);
background-position: bottom;
background-size: 100% 25px;
background-repeat: no-repeat;
border-bottom: 1px solid #000;
border-top: 1px solid red;
}
<div></div>
我像这样在h3标签下添加了一行
<h3 class="home_title">Your title here</h3>
.home_title{
display:block;
}
.home_title:after {
display:block;
clear:both;
content : "";
position: relative;
left : 0;
bottom : 0;
max-width:250px;
height : 1px;
width : 50%; /* or 100px */
border-bottom:1px solid #e2000f;
margin:0 auto;
padding:4px 0px;
}
边框大小不能与div本身不同。
解决方案是在正下方,居中或绝对定位下添加另一个div,并具有所需的1像素边框和仅1像素高度。
我将原始边框留在其中,以便可以看到宽度,并有两个示例-一个具有100宽度的示例,另一个具有100宽度居中的示例。删除您不想使用的那个。
派对晚了,但是对于任何想要设置两个边框(在我的情况下在底部和右侧)的人,您可以在接受的答案中使用该技术,并在第二行中添加:after psuedo-element,然后只需更改属性即可因此:http: //jsfiddle.net/oeaL9fsm/
div
{
width:500px;
height:500px;
position: relative;
z-index : 1;
}
div:before {
content : "";
position: absolute;
left : 25%;
bottom : 0;
height : 1px;
width : 50%;
border-bottom:1px solid magenta;
}
div:after {
content : "";
position: absolute;
right : 0;
bottom : 25%;
height : 50%;
width : 1px;
border-right:1px solid magenta;
}
我在项目中做了类似的事情。我想在这里分享。您可以将另一个div作为孩子添加,并为其设置一个较小的边框,并使用常规CSS将其放置在左侧,中央或右侧
HTML代码:
<div>
content
<div class ="ac-brdr"></div>
</div>
CSS如下:
.active {
color: magneta;
}
.active .ac-brdr {
width: 20px;
margin: 0 auto;
border-bottom: 1px solid magneta;
}
边框具有整个html元素。如果要使用下半边框,则可以将其与其他一些可识别的块(例如跨度)一起包装。
HTML代码:
<div> <span>content here </span></div>
CSS如下:
div{
width:200px;
height:50px;
}
span{
width:100px;
border-bottom:1px solid magenta;
}
这将有助于:
http://www.w3schools.com/tags/att_hr_width.asp
<hr width="50%">
这将创建一条宽度为50%的水平线,如果要编辑样式,则需要创建/修改类。
我只是使用了与之相反的方法:after
,::after
因为我需要准确地使我的底部边框1.3rem
更宽:
当我用我的元素得到了超级变形:before
,并:after
在同一时间,因为元素与水平对齐display: flex
,flex-direction: row
和align-items: center
。
您可以使用它来制作更宽或更窄的东西,或者可能是任何数学尺寸的mod:
a.nav_link-active {
color: $e1-red;
margin-top: 3.7rem;
}
a.nav_link-active:visited {
color: $e1-red;
}
a.nav_link-active:after {
content: '';
margin-top: 3.3rem; // margin and height should
height: 0.4rem; // add up to active link margin
background: $e1-red;
margin-left: -$nav-spacer-margin;
display: block;
}
a.nav_link-active::after {
content: '';
margin-top: 3.3rem; // margin and height should
height: 0.4rem; // add up to active link margin
background: $e1-red;
margin-right: -$nav-spacer-margin;
display: block;
}
抱歉,这是SCSS
,只需将数字乘以10,然后将变量更改为一些正常值即可。
div:before
left: 50px
。