css3圆形图片-3D 变换 光标悬停图像 向后翻转 文字说明

2023-08-26 0 2,590 百度已收录

设计思路:

首先使用图像和标题制作一个简单的页面结构,然后设置其转换。 将变换后的元素,即照片和文字放在一个父容器上,这就需要四个父容器,然后将这四个父容器放在最里面的stage前面进行变换,并在每个父容器上包含两部分:一是里面的图片,另一个是下面的说明文字。 最后利用图层定位,让图片和下面的说明文字有叠加的效果。 首先显示这张图片,当鼠标悬停在前面时,因为3D变换(即翻转每张图片的效果是绕Y轴旋转180度),会显示旁边的文字。

(1) HTML主页文件的基本结构

首先制作一个需要变换元素的整个结构。 最内层有一个舞台,放置在一个包上,舞台名为“piclist”。 由于当前stage只使用了一个stage,所以用ID来引用,用“#”来定义。 舞台上需要变换的元素有四组。 制作 4 个袋子作为父容器,并给父容器命名。 它被称为“picbox”,类用于指代这种样式。 有两个元素需要在父容器上进行转换。 正面部分载有图片,反面部分载有说明文字。 正面和背面都有一个共同的样式,它们的共同样式被类引用,并放置在面等共同样式上。 正面的图片有单独的样式,通过将其放置在诸如front这样的样式之上来引用; 背面的文字也有单独的样式,通过将其放在背面的顶部来引用。 这是父容器的当前结构。 我们再次在容器上设置图片和文字的内容,其中图片添加了相对路径。

我们来简单设置CSS样式部分:首先清除默认样式,将页面背景色设置为深红色,直接设置在body标签上。

目前基本的结构和样式已经搭建完毕,我们来看看代码是如何编译的。

下面是代码部分:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Document</title>
 6     <style>
 7         *{
 8             padding: 0;
 9             margin: 0;
10         }
11         body{
12             background-color:#0D3462;
13         }        
14         
15     </style>
16 </head>
17 <body>
18     <div id="piclist">
19         <div class="picbox">
20                 <div class="face front"><img src="images/1.jpg"></div>
21             <div class="face back"><h3>浓缩咖啡</h3></div>
22         </div>
23         <div class="picbox">
24                 <div class="face front"><img src="images/2.jpg"></div>
25             <div class="face back"><h3>卡布奇诺</h3></div>
26         </div>
27         <div class="picbox">
28                 <div class="face front"><img src="images/3.jpg"></div>
29             <div class="face back"><h3>拿铁</h3></div>
30         </div>
31         <div class="picbox">
32             <div class="face front"><img src="images/4.jpg"></div>
33             <div class="face back"><h3>摩卡</h3></div>
34         </div>
35     </div>
36 </body>
37 </html>

疗效图如下:

(2)CSS样式设置后展开的效果

在基础里面,细化风格。 首先设置舞台的样式:设置舞台的高度和长度,即舞台的大小,这个数字是根据上面元素的大小来设置的。 设置舞台位置:垂直距离顶部100pxcss3圆形图片,水平方向居中。 设置四个父容器的样式:将四个父容器排成一排作为一个包,设置它们的浮动向左,然后设置它们的高度、长度、外距,最重要的是,因为父元素需要将上面需要变换的内容包含进去,设置3D变换(在编辑器上由trsf扩展生成),将其值设置为preserve-3d,这些变换不是一下子全部变换的,而是渐进变换,设置transition,让它转换在1.5秒内完成,这是父容器的初始设置。

设置当键盘悬停在父容器前面时要执行的 3D 变换:沿 Y 轴翻转 180 度。 父容器上需要变换的两个元素与麻将牌的两侧效果相同。 设置脸部的样式是这样的:先设置高度和宽度,然后设置图片放在前面的那一侧的样式,并将其边框设置为2像素的虚线。 为了配合奶茶的颜色,将边框颜色设置为蓝色,然后将反面的样式设置其背景色为奶茶色,边框为2像素,虚线,黑色为显示时,反面文字显示为红色,文字内容水平居中。

下面是CSS样式后的代码:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Document</title>
 6     <style>
 7                 *{
 8             padding: 0;
 9             margin: 0;
10         }
11         body{
12             background-color:#0D3462;
13         }
14         /*舞台*/
15         #piclist{  
16             width:760px; /*170*4+10*8*/
17             height: 220px;/*190+边框*/
18             margin: 100px auto;
19         }
20         /*容器*/
21         .picbox{
22             float: left;
23             /*position: relative;*/
24             width: 170px;
25             height: 190px;
26             margin: 10px;
27             /*3d——双面效果*/
28             transform-style:preserve-3d;
29             transition:1.5s;
30         }
31         /*舞台鼠标悬停,就翻转,
32         正面背面互换*/
33         .picbox:hover{
34             transform:rotateY(180deg);
35         }
36         .face{
37             /*position: absolute;*/
38             width:170px;
39             height:190px;
40         }
41         .front{
42             border:2px solid #4b2518;
43         }        
44         .back{
45             /*让它成为背面,开始只显示正面*/
46             /*transform:rotateY(180deg);    */
47             background-color: #4b2518;
48             border:2px solid #fff;
49         }
50         .back h3{
51             color:white;
52             text-align:center;
53         }
54     </style>
55 </head>
56 <body>
57     <div id="container">
58         <div id="piclist">
59             <div class="picbox">
60                    <div class="face front"><img src="images/1.jpg"></div>
61                 <div class="face back"><h3>浓缩咖啡</h3></div>
62             </div>
63             <div class="picbox">
64                    <div class="face front"><img src="images/2.jpg"></div>
65                 <div class="face back"><h3>卡布奇诺</h3></div>
66             </div>
67             <div class="picbox">
68                    <div class="face front"><img src="images/3.jpg"></div>
69                 <div class="face back"><h3>拿铁</h3></div>
70             </div>
71             <div class="picbox">
72                 <div class="face front"><img src="images/4.jpg"></div>
73                 <div class="face back"><h3>摩卡</h3></div>
74             </div>
75         </div>
76     </div>
77 </body>
78 </html>

疗效图如下:

★当前图片和文字都已经设置好了,但是键盘悬停在里面也能实现逐行翻转的效果,存在两个问题:

⑴图文关系不产生正反面关系;

⑵当鼠标悬停在正面时,你会发现背面的文字已经颠倒了,相当于字写反了。

★我们最终想要达到的疗效是当前不可逆转的疗效,那么该怎么做呢?

在初始状态下将文本翻转到反面,当鼠标停留在正面时,会再次翻转回来,这样就产生了正常词序的文本。

(三)完整疗效代码

设置图层定位。 需要在父元素,即父容器上设置它的图层定位方式。 将父元素设置为相对定位。 无论子元素是front还是back,都应该是绝对定位,然后将back设置为初始状态。 翻转,使初始状态翻转180度。

完整代码如下所示:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Document</title>
 6     <style>
 7         *{
 8             padding: 0;
 9             margin: 0;
10         }
11         body{
12             background-color:#0D3462;
13         }
14         /*舞台*/
15         #piclist{  
16             width:760px; /*170*4+10*8*/
17             height: 220px;/*190+边框*/
18             margin: 100px auto;
19         }
20         /*容器*/
21         .picbox{
22             float: left;
23             position: relative;
24             width: 170px;
25             height: 190px;
26             margin: 10px;
27             /*3d——双面效果*/
28             transform-style:preserve-3d;
29             transition:1.5s;
30         }
31         /*舞台鼠标悬停,就翻转,
32         正面背面互换*/
33         .picbox:hover{
34             transform:rotateY(180deg);
35         }
36         .face{
37             position: absolute;
38             width:170px;
39             height:190px;
40         }
41         .front{
42             border:2px solid #4b2518;
43         }        
44         .back{
45             /*让它成为背面,开始只显示正面*/
46             transform:rotateY(180deg);    
47             background-color: #4b2518;
48             border:2px solid #fff;
49         }
50         .back h3{
51             color:white;
52             text-align:center;
53         }
54     </style>
55 </head>
56 <body>
57     <div id="container">
58         <div id="piclist">
59             <div class="picbox">
60                    <div class="face front"><img src="images/1.jpg"></div>
61                 <div class="face back"><h3>浓缩咖啡</h3></div>
62             </div>
63             <div class="picbox">
64                    <div class="face front"><img src="images/2.jpg"></div>
65                 <div class="face back"><h3>卡布奇诺</h3></div>
66             </div>
67             <div class="picbox">
68                    <div class="face front"><img src="images/3.jpg"></div>
69                 <div class="face back"><h3>拿铁</h3></div>
70             </div>
71             <div class="picbox">
72                 <div class="face front"><img src="images/4.jpg"></div>
73                 <div class="face back"><h3>摩卡</h3></div>
74             </div>
75         </div>
76     </div>
77 </body>
78 </html>

疗效图如下:

因为使用了分层定位,父元素是相对定位css3圆形图片,而两个子元素相对于父元素是绝对定位,这意味着两个子元素原来的文档流位置丢失了,所以它们仍然会堆叠在一起,但是在初始状态下,我们已经将文本翻转了180度,这样当光标停留在前面时,它又翻转回来,这就产生了最终的效果。

上面是css3中3D变换的例子——鼠标悬停在图片上,翻转反面文字描述的所有代码和疗效。 希望有帮助。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 css3 css3圆形图片-3D 变换 光标悬停图像 向后翻转 文字说明 https://www.wkzy.net/game/156861.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务