在网页设计中,悬停效果因其易于实现而被广泛使用。
他们为添加了交互元素并使其设计良好,从而保持用户参与度。
悬停效果最常见的功能是突出显示文本链接或者按钮。
但是,它们还有其他功能,并且在应用于图像时可以产生强大的效果。
悬停是将鼠标游标放在对象上时发生的效果。
它主要用于样式和可用性。
与会减慢工作速度的动画不同,有了 CSS 悬停效果,就不会有这样的问题。
在本教程中,我们将展示如何仅使用 CSS 为图像添加创意悬停效果。
创建 HTML
- 添加带有“图像”类的 <figure> 标签。
<figure> 标签用于指示自包含内容。
- 使用 <img> 标签添加图像。
- 使用 <figcaption> 标签为 <figure> 标签的内容添加标题或者解释。
<figure class="image">
<img src="https://www.onitroad.com/static/img/logo.png" width="310" height="220" alt="Example image" />
<figcaption>
<h3>onitroad</h3>
</figcaption>
</figure>
添加 CSS
- 通过设置图像的最大宽度、最小宽度和最大高度来设置图像的样式。
将位置设置为“相对”,将溢出设置为“隐藏”。
添加 text-align 属性及其“center”值。
- 添加“图像”类的过渡。
我们使用 *(星号)选择器来选择文档中的所有元素。
- 将图像的最大宽度设置为 100%。另外,指定位置和不透明度。
- 通过设置 <h3> 元素的背景和位置并指定 transform 属性来设置它的样式。
将 text-transform 设置为“uppercase”以使每个单词的所有字符都大写并定义 font-weight。
- 设置 :before 伪元素的样式。
设置元素的高度和宽度并定义颜色。
指定过渡和变换属性,然后使用 :hover 伪类。
figure.image {
position: relative;
overflow: hidden;
margin: 10px;
min-width: 220px;
max-width: 310px;
max-height: 220px;
width: 100%;
background: #000000;
color: #eeeeee;
text-align: center;
}
figure.image * {
-webkit-transition: all 0.3s ease-in-out;
-moz-transition: all 0.3s ease-in-out;
-o-transition: all 0.3s ease-in-out;
transition: all 0.3s ease-in-out;
}
figure.image img {
max-width: 100%;
position: relative;
opacity: 0.6;
}
figure.image h3 {
position: absolute;
left: 50px;
right: 50px;
display: inline-block;
background: #000;
-webkit-transform: skew(-5deg) rotate(-10deg) translate(0, -50%);
-moz-transform: skew(-5deg) rotate(-10deg) translate(0, -50%);
-o-transform: skew(-5deg) rotate(-10deg) translate(0, -50%);
transform: skew(-5deg) rotate(-10deg) translate(0, -50%);
padding: 15px 5px;
margin: 0;
top: 50%;
text-transform: uppercase;
font-weight: 400;
}
figure.image:before {
height: 130%;
width: 130%;
top: 0;
left: 0;
content: '';
background: #cccccc;
position: absolute;
-webkit-transition: all 0.3s ease-in-out;
-moz-transition: all 0.3s ease-in-out;
-o-transition: all 0.3s ease-in-out;
transition: all 0.3s ease-in-out;
-webkit-transform: rotate(110deg) translateY(-50%);
-moz-transform: rotate(110deg) translateY(-50%);
-o-transform: rotate(110deg) translateY(-50%);
transform: rotate(110deg) translateY(-50%);
}
figure.image:hover img,
figure.image.hover img {
opacity: 1;
-moz-transform: scale(1.1);
-ms-transform: scale(1.1);
-o-transform: scale(1.1);
transform: scale(1.1);
}
figure.image:hover h3,
figure.image.hover h3 {
-moz-transform: skew(-10deg) rotate(-10deg) translate(-150%, -50%);
-o-transform: skew(-10deg) rotate(-10deg) translate(-150%, -50%);
transform: skew(-10deg) rotate(-10deg) translate(-150%, -50%);
}
figure.image:hover:before,
figure.image.hover:before {
-moz-transform: rotate(110deg) translateY(-150%);
-o-transform: rotate(110deg) translateY(-150%);
transform: rotate(110deg) translateY(-150%);
}
让我们把代码的各个部分放在一起。
添加悬停效果的示例:
<!DOCTYPE html>
<html>
<head>
<title>文档的标题</title>
<style>
figure.image {
position: relative;
overflow: hidden;
margin: 10px;
min-width: 220px;
max-width: 310px;
max-height: 220px;
width: 100%;
background: #000000;
color: #eeeeee;
text-align: center;
}
figure.image * {
-webkit-transition: all 0.3s ease-in-out;
-moz-transition: all 0.3s ease-in-out;
-o-transition: all 0.3s ease-in-out;
transition: all 0.3s ease-in-out;
}
figure.image img {
max-width: 100%;
position: relative;
opacity: 0.6;
}
figure.image h3 {
position: absolute;
left: 50px;
right: 50px;
display: inline-block;
background: #000;
-webkit-transform: skew(-5deg) rotate(-10deg) translate(0, -50%);
-moz-transform: skew(-5deg) rotate(-10deg) translate(0, -50%);
-ms-transform: skew(-5deg) rotate(-10deg) translate(0, -50%);
-o-transform: skew(-5deg) rotate(-10deg) translate(0, -50%);
transform: skew(-5deg) rotate(-10deg) translate(0, -50%);
padding: 15px 5px;
margin: 0;
top: 50%;
text-transform: uppercase;
font-weight: 400;
}
figure.image:before {
height: 130%;
width: 130%;
top: 0;
left: 0;
content: '';
background: #cccccc;
position: absolute;
-webkit-transition: all 0.3s ease-in-out;
-moz-transition: all 0.3s ease-in-out;
-o-transition: all 0.3s ease-in-out;
transition: all 0.3s ease-in-out;
-webkit-transform: rotate(110deg) translateY(-50%);
-moz-transform: rotate(110deg) translateY(-50%);
-ms-transform: rotate(110deg) translateY(-50%);
-o-transform: rotate(110deg) translateY(-50%);
transform: rotate(110deg) translateY(-50%);
}
figure.image:hover img,
figure.image.hover img {
opacity: 1;
-moz-transform: scale(1.1);
-ms-transform: scale(1.1);
-o-transform: scale(1.1);
transform: scale(1.1);
}
figure.image:hover h3,
figure.image.hover h3 {
-moz-transform: skew(-10deg) rotate(-10deg) translate(-150%, -50%);
-ms-transform: skew(-10deg) rotate(-10deg) translate(-150%, -50%);
-o-transform: skew(-10deg) rotate(-10deg) translate(-150%, -50%);
transform: skew(-10deg) rotate(-10deg) translate(-150%, -50%);
}
figure.image:hover:before,
figure.image.hover:before {
-moz-transform: rotate(110deg) translateY(-150%);
-ms-transform: rotate(110deg) translateY(-150%);
-o-transform: rotate(110deg) translateY(-150%);
transform: rotate(110deg) translateY(-150%);
}
</style>
</head>
<body>
<h2>Advanced hover effect</h2>
<figure class="image">
<img src="https://onitroad.com/static/img/logo.png" width="310" height="220" alt="Example image" />
<figcaption>
<h3>onitroad</h3>
</figcaption>
</figure>
</body>
</html>
向 3D 变换元素添加悬停效果的示例:
<!DOCTYPE html>
<html>
<head>
<title>文档的标题</title>
<style>
.example {
width: 250px;
height: 250px;
margin: 20px auto 40px auto;
perspective: 1000px;
}
.example a {
display: block;
width: 100%;
height: 100%;
background: url("/bg.jpg");
background-size: cover;
transform-style: preserve-3d;
-webkit-transform: rotateX(80deg);
-moz-transform: rotateX(80deg);
-ms-transform: rotateX(80deg);
-o-transform: rotateX(80deg);
transform: rotateX(80deg);
-webkit-transition: all 0.8s;
-moz-transition: all 0.8s;
-o-transition: all 0.8s;
transition: all 0.8s;
}
.example:hover a {
-webkit-transform: rotateX(10deg);
-moz-transform: rotateX(10deg);
-ms-transform: rotateX(10deg);
-o-transform: rotateX(10deg);
transform: rotateX(10deg);
}
.example a:after {
content: '';
position: absolute;
left: 0;
bottom: 0;
width: 100%;
height: 20px;
background: #cccccc;
-webkit-transform: rotateX(60deg);
-moz-transform: rotateX(60deg);
-ms-transform: rotateX(60deg);
-o-transform: rotateX(60deg);
transform: rotateX(60deg);
transform-oroirn: bottom;
}
</style>
</head>
<body>
<h2>Advanced hover effect</h2>
<div class="example">
<a href="#"></a>
</div>
</body>
</html>
日期:2020-06-02 22:14:53 来源:oir作者:oir
