Длина границы меньше ширины div?
У меня есть следующий код
div {
width:200px;
border-bottom:1px solid magenta;
height:50px;
}
DEMO
Ширина div равна 200px, поэтому border-bottom также 200px, но что мне делать, если я хочу, чтобы border-bottom только 100px без изменения ширины div?
Ответы
Ответ 1
Вы можете использовать псевдоэлементы. Например.
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>
Ответ 2
Другой способ сделать это (в современных браузерах) - с негативной тенью с расширением. Ознакомьтесь с обновленной скриптой: http://jsfiddle.net/WuZat/290/
box-shadow: 0px 24px 3px -24px magenta;
Я думаю, что самый безопасный и наиболее совместимый способ - это принятый ответ выше. Просто подумал, что я поделюсь другой техникой.
Ответ 3
Вы можете использовать линейный градиент:
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>
Ответ 4
Вы не можете иметь границу другого размера, чем сам div.
решение заключалось бы в том, чтобы просто добавить еще один div под нейтральным, центрированным или абсолютным позиционированием с желаемой границей 1 пикселя и только 1 пикселем в высоту.
http://jsfiddle.net/WuZat/3/
Я оставил исходную рамку, чтобы вы могли видеть ширину, и иметь два примера: один с шириной 100, а другой с 100 центрированием по ширине. Удалите тот, который вы не хотите использовать.
Ответ 5
Я добавил строку под тегом 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;
}
Ответ 6
Граница получает весь элемент html. Если вы хотите получить половину нижней границы, вы можете обернуть ее каким-либо другим идентифицируемым блоком, таким как span.
Код HTML:
<div> <span>content here </span></div>
CSS, как показано ниже:
div{
width:200px;
height:50px;
}
span{
width:100px;
border-bottom:1px solid magenta;
}
Ответ 7
Я только что сделал противоположное этому, используя :after
и ::after
, потому что мне нужно было сделать нижнюю границу ровно 1.3rem
шире:
Мой элемент получил супер деформированный, когда я использовал :before
и :after
одновременно, потому что элементы выравниваются по горизонтали с помощью display: flex
, flex-direction: row
и align-items: center
.
Вы можете использовать это для создания чего-то более широкого или более узкого или, возможно, любых мотивов математического измерения:
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 и измените переменные с некоторыми нормальными значениями.
Ответ 8
div{
font-size: 25px;
line-height: 27px;
display:inline-block;
width:200px;
text-align:center;
}
div::after {
background: #f1991b none repeat scroll 0 0;
content: "";
display: block;
height: 3px;
margin-top: 15px;
width: 100px;
margin:auto;
}
Ответ 9
Это поможет:
http://www.w3schools.com/tags/att_hr_width.asp
<hr width="50%">
Это создает горизонтальную линию шириной 50%, вам нужно будет создать/изменить класс, если вы хотите отредактировать стиль.
Ответ 10
Поздно вечеринке, но для тех, кто хочет сделать 2 границы (внизу и справа в моем случае), вы можете использовать технику в принятом ответе и добавить: после 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;
}