CSS实例:翻转图片、滚动图片栏、打开大门

摘要:
CSS翻转图片主要用到的技术除了3D翻转和定位,还用到了一个属性backface-visibility:visable|hidden;该属性主要是用来设定元素背面是否可见。DOCTYPEhtml˃Document/*backface-visibility*/div{250px;height:170px;margin:100pxauto;position:relative;}divimg{250px;height:170px;position:absolute;top:0;left:0;transition:all1s;}divimg:first-child{z-index:1;backface-visibility:hidden;}div:hoverimg{transform:rotateY;}更多项目实战视频,免费分享,加入我的前端学习qun:784783012点击:加入CSS滚动的图片栏网站上可以经常看到有一些图片进行持续不断的滚动,这个效果可以通过css的动画效果来实现。具体步骤如下:1、设置主体代码各处两组一样的图片2、设置nav的大小,宽度为一组图片相加的宽度,高度为图片的高度。

CSS 翻转图片主要用到的技术除了3D翻转和定位 ,还用到了一个属性 backface-visibility:visable|hidden;该属性主要是用来设定元素背面是否可见。

效果图如下:

图片描述

具体的步骤如下:

1、写出页面主体,

<div>
        <img src="http://t.zoukankan.com/Images/b.jpg" alt="">
        <img src="http://t.zoukankan.com/Images/c.jpg" alt="">
    </div>

2、通过定位使两张图片叠加在一起

div img {
             250px;
            height: 170px;
            position: absolute;
            top: 0;
            left: 0;
            transition: all 1s;
        }

3、设置第一张图片背面不可见

div img:first-child {
            z-index: 1;
            backface-visibility: hidden;
        }

4、添加旋转180度

div:hover img {
            transform: rotateY(180deg);
        }

完整代码:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        /* backface-visibility */
        
        div {
             250px;
            height: 170px;
            margin: 100px auto;
            position: relative;
        }
        
        div img {
             250px;
            height: 170px;
            position: absolute;
            top: 0;
            left: 0;
            transition: all 1s;
        }
        
        div img:first-child {
            z-index: 1;
            backface-visibility: hidden;
        }
        
        div:hover img {
            transform: rotateY(180deg);
        }
    </style>
</head>

<body>
    <div>
        <img src="http://t.zoukankan.com/Images/b.jpg" alt="">
        <img src="http://t.zoukankan.com/Images/c.jpg" alt="">
    </div>
</body>

</html>
更多项目实战视频,免费分享,加入我的前端学习qun:784783012 点击:加入

CSS 滚动的图片栏

网站上可以经常看到有一些图片进行持续不断的滚动,这个效果可以通过css的动画效果来实现。

clipboard.png

主要原理是通过动画向左移动。

首先给出两组一样的图片(同一行上),让整体图片向左移动一组图片的长度,

这样在动画结束时会迅速还原到原来位置,而此时正好与第二组图片交替,看起来就像是一组图片在不断循环向左滚动。

具体步骤如下:

1、设置主体代码各处两组一样的图片

<nav>
        <ul>
            <li><img src="http://t.zoukankan.com/Images/1 (2).jpg" alt=""></li>
            <li><img src="http://t.zoukankan.com/Images/2 (2).jpg" alt=""></li>
            <li><img src="http://t.zoukankan.com/Images/3 (2).jpg" alt=""></li>
            <li><img src="http://t.zoukankan.com/Images/1 (2).jpg" alt=""></li>
            <li><img src="http://t.zoukankan.com/Images/2 (2).jpg" alt=""></li>
            <li><img src="http://t.zoukankan.com/Images/3 (2).jpg" alt=""></li>
        </ul>
    </nav>

2、设置nav的大小,宽度为一组图片相加的宽度,高度为图片的高度。

 nav {
             750px;
            height: 170px;
            border: 1px solid red;
            margin: 100px auto;
}

3、设置ul大小,宽度为nav的两倍,高度与nav相同,并指定动画相关属性

ul {
             200%;
            height: 100%;
            animation: picmove 5s linear infinite forwards;
        }

4、定义动画,主要是向左移动一组图片的长度

 @keyframes picmove {
            from {
                transform: translate(0);
            }
            to {
                transform: translate(-750px);
            }
        }

5、增加鼠标悬停,动画暂停的效果

ul:hover {
            animation-play-state: paused;
        }

6、最后给nav 增加 overflow:hidden 使得超出的部分隐藏,这样整体一组滚动的图片栏就做好了

完整代码如下:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        
        ul {
            list-style: none;
        }
        
        nav {
             750px;
            height: 170px;
            border: 1px solid red;
            margin: 100px auto;
            overflow: hidden;
        }
        
        ul {
             200%;
            height: 100%;
            animation: picmove 5s linear infinite forwards;
        }
        
        @keyframes picmove {
            from {
                transform: translate(0);
            }
            to {
                transform: translate(-750px);
            }
        }
        
        img {
             250px;
            height: 170px;
            float: left;
        }
        
        ul:hover {
            animation-play-state: paused;
        }
    </style>
</head>

<body>
    <nav>
        <ul>
            <li><img src="http://t.zoukankan.com/Images/1 (2).jpg" alt=""></li>
            <li><img src="http://t.zoukankan.com/Images/2 (2).jpg" alt=""></li>
            <li><img src="http://t.zoukankan.com/Images/3 (2).jpg" alt=""></li>
            <li><img src="http://t.zoukankan.com/Images/1 (2).jpg" alt=""></li>
            <li><img src="http://t.zoukankan.com/Images/2 (2).jpg" alt=""></li>
            <li><img src="http://t.zoukankan.com/Images/3 (2).jpg" alt=""></li>
        </ul>
    </nav>
</body>

</html>

CSS 打开大门

主要运用到了3D旋转和定位技术。

效果如下:

图片描述

具体步骤如下:

1、首先在页面主体加三个很简单的div标签:

 <div class="door">
        <div class="door-l"></div>
        <div class="door-r"></div>
    </div>

2、给外层盒子(.door) 加上基本的属性、背景、视距以及相对定位(子盒子要用到绝对定位,所以父盒子最好 加上相对定位)。

.door {
             450px;
            height: 450px;
            border: 1px solid #000000;
            margin: 100px auto;
            background: url(Images/men.png) no-repeat;
            background-size: 100% 100%;
            position: relative;
            perspective: 1000px;
        }

3、给左右的门设置相关属性,这里给出左盒子的 相关属性。右盒子只需将定位改为右边距离为0,以及将旋转轴改为右侧即可。

.door-l {
             50%;
            height: 100%;
            background-color: brown;
            position: absolute;
            top: 0;
            transition: all 0.5s;
            left: 0;
            border-right: 1px solid #000000;
            transform-origin: left;
        }

4、添加门上的 小圆环,在这里是使用伪元素 before 进行添加的。

(1)、设置大小与边框

(2)、设置border-radius 为50% 让其变成圆形。

(3)、设置定位 垂直居中并靠里面有一定距离。

.door-l::before {
            content: "";
            border: 1px solid #000000;
             20px;
            height: 20px;
            position: absolute;
            top: 50%;
            border-radius: 50%;
            transform: translateY(-50%);
            right: 5px;
        }

5、最后设置旋转度数,我这里是设置了120度(注意度数的正负代表旋转方向)

.door:hover .door-l {
            transform: rotateY(-120deg);
        }

完整代码如下:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        .door {
             450px;
            height: 450px;
            border: 1px solid #000000;
            margin: 100px auto;
            background: url(Images/men.png) no-repeat;
            background-size: 100% 100%;
            position: relative;
            perspective: 1000px;
        }
        
        .door-l,
        .door-r {
             50%;
            height: 100%;
            background-color: brown;
            position: absolute;
            top: 0;
            transition: all 0.5s;
        }
        
        .door-l {
            left: 0;
            border-right: 1px solid #000000;
            transform-origin: left;
        }
        
        .door-r {
            right: 0;
            border-left: 1px solid #000000;
            transform-origin: right;
        }
        
        .door-l::before,
        .door-r::before {
            content: "";
            border: 1px solid #000000;
             20px;
            height: 20px;
            position: absolute;
            top: 50%;
            border-radius: 50%;
            transform: translateY(-50%);
        }
        
        .door-l::before {
            right: 5px;
        }
        
        .door-r::before {
            left: 5px;
        }
        
        .door:hover .door-l {
            transform: rotateY(-120deg);
        }
        
        .door:hover .door-r {
            transform: rotateY(120deg);
        }
    </style>
</head>

<body>
    <div class="door">
        <div class="door-l"></div>
        <div class="door-r"></div>
    </div>
</body>

</html>
更多项目实战视频,免费分享,加入我的前端学习qun:784783012 点击:加入

免责声明:文章转载自《CSS实例:翻转图片、滚动图片栏、打开大门》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇在可编辑div中插入文字或图片的问题解决思路docker部署微服务不支持中文字体的解决方案下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

python+selenium十五:CSS与Jquery

在css中,id用#表示,class用.表示,要定位标签直接写标签名,其他属性就用[xxx='xxx'] 一、css定位 1、属性定位:可以通过任意属性定位,不局限于id、class、name、tag、link这五种属性 1.通过id定位driver.find_element_by_css_selector("#kw").send_keys("hao")...

CSS 属性选择器的深入挖掘

CSS 属性选择器,可以通过已经存在的属性名或属性值匹配元素。 属性选择器是在 CSS2 中引入的并且在 CSS3 中得到了很好拓展。本文将会比较全面的介绍属性选择器,尽可能的去挖掘这个选择器在不同场景下的不同用法。 简单的语法介绍 [attr]:该选择器选择包含 attr 属性的所有元素,不论 attr 的值为何。 [attr=val]:该选择器仅选...

unity中实现静态的3D对象对其他对象的跟随

using UnityEngine; public class FollowPosition : MonoBehaviour { public Transform targetTrans; public Transform lookAtTrans; public Vector3 offsetPos; //与本跟随者...

前端框架Vue自学之webpack(四)

终极目标:掌握和使用Vue(全家桶:Core+Vue-router+Vuex) 本博客目的:记录Vue学习的进度和心得(webpack) 内容:学习和使用webpack。为学习Vue CLI做准备。 正文: webpack 一、webpack 1、认识webpack 本质上来说,webpack是一个现代的JavaScript应用的静态模块打包工具。模块和打...

Swift使用transform 实现重复平移动画

摘要 要实现一组重复的动画,本质上就是找到动画开始点、结束点。在动画结束的时候,触发开始点,持续这样的动作。 这里面要梳理的逻辑就是1.触发开始点和2.监听动画结束点。这两个逻辑是实现重复动画的基础。 应用场景 将 imageView 等 UI 控件,设置成平移的动画,并且一直动画中。 transform 可以实现控件的平移,但是无法连续动画。 API...

基于CSS3的3D旋转效果

自从有了html5和css3,好多以前只能想想的华丽效果都可以上手实现了。3D 转换(个人认为3D变换更贴切^)就是其中之一。关于3D转换,可以阅读CSS3 3D transform变换,不过如此,文中对3D转换进行了形象、生动、详细的阐述。在这里,只和大家讨论怎么利用3D转换来实现立体及其旋转效果,例如: 好吧,废话不多说,上代码! 1.页面代码 1...