Відповіді:
Можна використовувати псевдоелементи. Напр
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>
Не потрібно використовувати додаткову розмітку для презентаційних цілей. : after також підтримується з IE8.
редагувати:
якщо вам потрібна правильна вирівняна межа, просто змініть 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 шириною по центру. Видаліть той, який ви не хочете використовувати.
Пізно до вечірки, але для всіх, хто хоче зробити 2 рамки (в моєму випадку внизу та вправо), ви можете використовувати техніку у прийнятій відповіді та додати: після psuedo-елемента для другого рядка, а потім просто змінити властивості, як так: 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 є деяка нижня межа між зображеннями і найкращим кодом рядка був - border-bottom-style: inset;
Я щось подібне зробив у своєму проекті. Я хотів би поділитися цим тут. Ви можете додати ще одну поділку як дитину та надати їй облямівку з невеликою шириною та розмістити її вліво, по центру чи праворуч за допомогою звичайного 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
.
Ви можете використовувати це для створення чогось більш широкого або вузького або, можливо, будь-яких модів математичного виміру:
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
.