* { margin:0; padding:0; } ul { width:800px; margin:20px auto 0; } li { float:left; position:relative; padding:20px; font-size:24px; color:#000; line-height:1; transition:0.2s all linear; list-style:none; cursor:pointer; } li::before { content:""; position:absolute; top:0; left:100%; width:0; height:100%; border-bottom:3px solid #000; transition:0.2s all linear; } li:hover::before { width:100%; top:0; left:0; transition-delay:0.1s; /*过渡延迟*/ border-bottom-color:#000; } li:hover ~ li::before { left:0; } li:active { background:#000; color:#fff; }
利用伪元素定位,初始宽度为0,底部边框 3px;hover时宽度为100%;css3的过渡及延迟实现