我试图重新创建complex.com中显示的效果,其中网站顶部的三个大面板上有一个彩色的底部边框。将鼠标悬停在面板上时,底部边框的高度会在动画效果中稍微变大。这是我认为产生效果的代码,仍然混淆了什么:之后呢。我只想动画面板或div的边框,而不是整个面板/ div。
.hero-unit--style:after {
background: #d93347;
}
.hero-unit:after {
display: block;
height: 3px;
background: #000;
transition: height .2s,box-shaddow .2s;
}
.hero-unit:after, .hero-unit__img-shadow {
position: absolute;
left: 0;
right: 0;
bottom: 0;
}
答案 0 :(得分:2)
这是一个伪元素。它仅作为附加元素的样式效果存在。然后它的属性在悬停其拥有元素时被更改/转换。换句话说,它根本不是边界。
CSS :: after伪元素匹配所选元素的虚拟最后一个子元素。它通常用于通过使用内容CSS属性将化妆品内容添加到元素。默认情况下,此元素是内联的。
基本上,它的工作原理如下:
body {
background: #c0ffee;
}
div {
width: 50%;
height: 150px;
border: 1px solid lightgrey;
background: white;
margin: 2em auto;
position: relative;
/* positioning context */
}
div::after {
content: '';
/* required */
position: absolute;
bottom: 0;
/* positioned at the bottom */
width: 100%;
height: 0px;
/* no height to start */
background: darkorange;
transition: height .5s ease;
}
div:hover::after {
height: 16px;
/*finishing height */
}
<div></div>
答案 1 :(得分:1)
只有少数事情值得您关注
hero-unit--pop-culture:after
hero-unit--style:after
hero-unit--music:after
这些仅适用于&#34; border&#34; (它不是边框,它的伪元素:之后)
然后:
.no-touch .hero-unit:hover:after
是&#34; border&#34;的高度。在悬停
.hero-unit:after {
display: block;
height: 3px;
background: #000;
transition: height 0.2s,box-shaddow 0.2s;
}
这里的height
是起始高度,动画是transition: height 0.2s
。这意味着它会将height属性从默认值(3px)更改为.no-touch .hero-unit:hover:after
部分中设置的值。 0.2s
是动画的过渡时间。
之后只有基本的:after 之类的内容,例如content: ''
,这是强制性的。
希望有所帮助:)
答案 2 :(得分:0)
其他答案很棒,他们打败了我!但是我还是会留下这个,以防我解释事情的奇怪方式对你有帮助! :d
所以..有些东西被称为&#34; Pseudo-Classes&#34;还有&#34; Pseudo-Elements&#34;。
伪元素的例子:
伪类的例子:
正如其他答案所指出的,您可能想要使用的是:hover
。
它的工作原理如下:
.myClass {
//Default styling (for when it's not being hovered)
}
.myClass:hover {
//Styling for when the element is hovered over.
}
您还可以添加transition
属性,以便在元素悬停时添加时间延迟和/或动画效果。
<强> e.g。强>
transiton: .3s ease;
要回答关于:after
伪元素的问题,这基本上做的是注入一小部分内容 AFTER 嵌套在所选元素中的所有其他内容,并且只是在结束标记之前。
<强> e.g。强>
<强> CSS:强>
.myClass::after {
content: "I AM AN AFTER PSEUDO ELEMENT";
}
原始HTML:
<div class="myClass">
<h1>WHATEVER</h1>
<p>blah blah blah</p>
<p>More rubbish content</p>
</div>
应用CSS后浏览器解释的HTML:
<div class="myClass">
<h1>WHATEVER</h1>
<p>blah blah blah</p>
<p>More rubbish content</p>
:after
</div>
您将在页面上看到的内容:
更多垃圾内容
我是伪劣元素之后
我希望能为您解决一些问题并帮助您解决问题! :)