css3动画之两面翻转的盒子

更新日期: 2019-08-07阅读: 2.3k标签: 盒子

利用伪元素before、after,只创建一个div

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        /*先清掉默认的样式*/
        body {
            margin: 0;
            padding: 0;
            background-color: bisque;
        }
        /*给创建的div设置宽高和加上3D效果,且加上定位,方便后期的动画操作*/
        .box {
            width: 300px;
            height: 300px;
            margin: 100px auto;
            position: relative;
            transform-style: preserve-3d;
            transition: all 5s;
        }
        /*给伪元素before和after设置宽高,以及定位,
        *此处用上下左右都为0的方法,使得before和after两个盒子紧贴父元素,达到这两个盒子与父盒子同款同高
        *也可以采用width=100% height=100%的方法
        */
        .box::before,.box::after {
            content: '';
            display: block;
            position: absolute;
            left: 0;
            right: 0;
            bottom: 0;
            top: 0;
        }
        .box::before {
            background: url("images/bg.png") right bottom;/*这里是设置背景图*/
            transform: translateZ(0px);/*利用伪元素的话,这里就必须要加上,但是根据浏览器的不同,这里给的值也就不同*/
        }
        .box::after {
            background: url("images/bg.png") left bottom;
            transform: translateZ(0px);/*利用伪元素的话,这里就必须要加上,但是根据浏览器的不同,这里给的值也就不同*/
        }
        .box:hover {
            transform: rotateY(180deg);
        }
    </style>
</head>
<body>
<div class="box"></div>
</body>
</html>


进一步优化——不采用伪元素

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        body {
            margin: 0;
            padding: 0;
            background-color: salmon;
        }
        div {
            width: 224px;
            height: 224px;
            position: relative;
        }
        img  {
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            transition: all 1s;
        }
        img:last-child {
            backface-visibility: hidden;
        }
        div:hover img {
            transform: rotateY(180deg);
        }
    </style>
</head>
<body>
<div>

    <img src="images/hou.svg" alt="">
    <img src="images/qian.svg" alt="">
</div>
</body>
</html>

一个盒子里面装两个同宽高的盒子,利用backface-visibility设置元素背面是否可见的属性,达到两面翻转的效果

链接: https://www.fly63.com/article/detial/5725

css盒子模型的深入理解,在块级、行内元素的区别和特性

css盒子模型用于处理元素的内容、内边距、边框和外边距的方式简称。css盒子模型到底的思想是什么?CSS盒子模型对行内元素和块级元素的区别和特点,Box-sizing的使用。

css3盒子模型中的box-sizing属性的使用_box sizing常用的3种属性

box-sizing属性用来定义元素的width和height所表示的区域,该属性一般有三种值:content-box、border-box、inherit,其中inherit表示box-sizing的值应该从父元素继承。

css中border-sizing属性详解和应用

box-sizing用于更改用于计算元素宽度和高度的默认的 CSS 盒子模型。它有content-box、border-box和inherit三种取值,inherit指的是从父元素继承box-sizing表现形式。根据项目中的使用经验和w3c的建议,推荐将box-sizing属性设置为border-box。

css盒子模型_css全局设置border-box

border-box 告诉浏览器去理解你设置的边框和内边距的值是包含在width,height内的。全局设置 border-box 很好,更符合我们通常对一个「盒子」尺寸的认知。让有边框的盒子正常使用百分比宽度。

CSS3中的box-sizing(content-box与border-box)

CSS3中的box-sizing 属性允许以特定的方式来指定盒模型,有两种方式:现代浏览器和IE9+默认值是content-box。 content-box:padding和border不被包含在定义的width和height之内。

DOM盒子模型常用属性client,offset和scroll

在JS中通过相关的属性可以获取(设置)元素的样式信息,这些属性就是盒子模型属性(基本上都是有关于样式的),clientWidth & clientHeight:获取当前元素可视区域的宽高

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!