2016-07-14 3 views
0

Играйте еще несколько с псевдоэлементами, и я хотел смоделировать нижнюю границу элемента списка элементов, растущего слева при зависании. К сожалению, мне удастся получить строку, чтобы увеличить длину текста, а не длину границы полного элемента списка.Нижняя граница CSS Переход не растягивается через

Я положил границу на элементы списка, так что вы знаете, что я имею в виду

HTML:

<div id="orangeNavBar"> 
<ul> 
    <li>Home</li> 
    <li>Products</li> 
    <li>Company</li> 
    <li>Contact</li> 
</ul> 
</div> 

CSS:

body 
{ 
margin: 0; 
} 

* 
{ 
margin: 0; 
padding: 0; 
} 

#orangeNavBar 
{ 
height: 45px; 
width: 627px; 
background-color: #E87966; 
margin-left: auto; 
margin-right: auto; 
margin-top: 15px; 
} 

ul 
{ 
list-style:none; 
} 

ul li 
{ 
float: left; 
display: inline-block; 
font-family: verdana; 
font-size: .9em; 
font-weight: bold; 
color: white; 
height: 45px; 
box-sizing: border-box; 
padding: 13.5px 20px; 
transition: color .3s; 
border: 1px solid black; 

} 

ul li::after 
{ 
display: block; 
content: ""; 
background: black; 
height: 2px; 
width: 0px; 
transition: width 0.2s ease; 
} 

ul li:hover::after 
{ 
width: 100%; 
} 

ul li:hover 
{ 
color: black; 
} 

Link to Codepen

ответ

1

Если вы добавляете следующий CSS, он должен работать так, как вы ожидаете:

ul li { 
    position: relative; 
} 

ul li:after { 
    position: absolute; 
    bottom: 0; 
    left: 0; 
} 

The position: relative требуется, чтобы убедиться, что элемент псевдо ограничена по ширине и высоте <li> вместо всего <body>.

Элемент position: absolute; для псевдоэлемента позволяет привязать элемент в левом нижнем углу (bottom: 0; left: 0;) элемента <li>.

+0

eureka! Большое спасибо! –

+0

Добро пожаловать! –

0
  1. Вы должны обернуть текст тегом.
  2. Затем назначьте position:relative и переместите ::after значениями li в span. , так что нижний край применяется только под текстом.
  3. И нужно изменить несколько свойств css, чтобы улучшить выравнивание.

Вот мой рабочий codepen фрагмент вашего проекта

HTML:

<ul> 
    <li><span>Home</span></li> 
    <li><span>Products</span></li> 
    <li><span>Company</span></li> 
    <li><span>Contact</span></li> 
</ul> 

CSS:

ul li span { 
    display:block; 
    padding: 13.5px 0; 
    position: relative; 
} 
ul li span::after { 
    display: block; 
    content: ""; 
    background: black; 
    height: 3px; 
    width: 0px; 
    transition: width 0.2s ease; 
    position: absolute; 
    bottom: 0; 
    left: 0; 
} 
ul li:nth-child(n+1)::before { 
    top: 20px; 
} 
ul li:hover span::after { 
    width: 100%; 
} 
Смежные вопросы