#javascript #html #angularjs #css
#javascript #HTML #angularjs #css
Вопрос:
Живой пример http://jsfiddle.net/vro0om/yhvnh /
Я пытаюсь нарисовать линию, разделяющую 2 элемента li во вложенных ul. Но строка принимает ширину контейнера ul, а не div, содержащую полную структуру. В упомянутом примере я использовал вложенный ul, но в моей работе используется ng-repeat для получения того же эффекта.
.unstyled {
padding-left: 24px;
}
.titleSeperator
{
background: black ;
margin-top: 0px;
margin-bottom: 0px;
height : 1px;
width:100%;
}
Комментарии:
1. Вот так: jsfiddle.net/yhvnh/1 ?
2. @dfsq нет, не справа, а касаясь левого края div
Ответ №1:
Я думаю, что есть более простой способ сделать то, что вы хотите.
Сначала удалите все ваши .titleSeperator
divs. Затем используйте следующий CSS-код для родительского элемента ul
:
ul.lines {
line-height: 1.4em;
background: linear-gradient(white 95%, black 5%);
background-size: 100% 1.4em;
background-origin: content-box;
}
Новая скрипка: http://jsfiddle.net/yhvnh/2 /
Некоторые пояснения к CSS:
line-gradient
позволяет создавать градиент, начиная с 95% белого и заканчивая 5% черногоbackground-size
определите размер градиента: ширина 100% и высота 1,4em (должно быть таким же, какline-height
)background-origin
указывает, относительно чего должно быть свойство background-position
Комментарии:
1. Привет, я использую обозначение px, и оно не соответствует ему, форматирование нарушается
2. Вам просто нужно заменить 1.4em на 16px, например.
Ответ №2:
Вы можете установить position: relative; overflow: hidden;
на самый верхний ul
и сделать разделители абсолютно расположенными
.titleSeperator {
background: black;
height : 1px;
width: 10000px;
position: absolute;
left: 0;
}
Демо-версия: http://jsfiddle.net/yhvnh/3 /
Однако Лукас предложил лучший подход, поэтому используйте его, если можете, вам следует избегать избыточных HTML-элементов.
Вариант 2
Вы также можете использовать :before
псевдоэлемент вместо избыточных .titleSeparator
divs
.unstyled > li:before {
content:'';
background: black;
height : 1px;
width: 10000px;
position: absolute;
left: 0;
}