运用HTML,CSS,JS 实现的几个网页特效

运用HTML,CSS,JS 实现的几个网页特效

1. 制作三角形图标

制作的效果如下:
在这里插入图片描述
那么怎样才能作出这个效果呢?
其实,这些三角形图标的宽和高都为0像素,之所以能显示这样的效果,是靠border(边框)来实现的。
我们来看一下这个 效果的源代码:
在这里插入图片描述

{
    
    
			width: 0px;
			height: 0px;
			border-top: 10px solid red;
			border-bottom: 10px solid blue;
			border-right: 10px solid black;
			border-left: 10px solid grey;
}

如果我们把border-xxx的颜色设置为透明,那么会是怎样的效果呢?显而易见,其实,它的效果就和上面一样了。
参考代码如下:

<!DOCTYPE html>
<html lang="en">
	<head>
	    <meta charset="UTF-8">
	    <title>Title</title>
	</head>
	<style type="text/css">
		div{
     
     
			display: inline-block;
			margin-right: 5px;
		}
		.top{
     
     
			width: 0px;
			height: 0px;
			border: 10px solid transparent;
			border-top: 10px solid red;
		}
		.top_left{
     
     
			width: 0px;
			height: 0px;
			border: 10px solid transparent;
			border-top: 10px solid red;
			border-left: 10px solid red;
		}
		.top_right{
     
     
			width: 0px;
			height: 0px;
			border: 10px solid transparent;
			border-top: 10px solid red;
			border-right: 10px solid red;
		}
		.bottom_left{
     
     
			width: 0px;
			height: 0px;
			border: 10px solid transparent;
			border-bottom: 10px solid red;
			border-left: 10px solid red;
		}
		.bottom_right{
     
     
			width: 0px;
			height: 0px;
			border: 10px solid transparent;
			border-bottom: 10px solid red;
			border-right: 10px solid red;
		}
	</style>
	<body>
		<div class="top"></div>
		<div class="top_left"></div>
		<div class="top_right"></div>
		<div class="bottom_left"></div>
		<div class="bottom_right"></div>
	</body>
</html>

2. 实现两个(或者更多)块级标签(如div标签)占一行

我们应该知道块级标签是单独占一行,如我们熟悉的div标签,那么怎样才能使多个div标签在一行中显示呢?

2.1 设置块级标签属性display为inline-block(行内块)

在制作三角形图标的代码中,为什么我用的都是div标签,而它们却只占一行呢?仔细看代码的读者可以发现,我设置了div标签的display属性为inline-block

2.2 设置为浮动(左、右浮动都可)

如下代码为:

<!DOCTYPE html>
<html lang="en">
	<head>
	    <meta charset="UTF-8">
	    <title>Title</title>
	</head>
	<style type="text/css">
		div{
     
     
			width: 100px;
			height: 100px;
		}
		.v1{
     
     
			background-color: red;
		}
		.v2{
     
     
			background-color: black;
		}
		.v3{
     
     
			background-color: blue;
		}
	</style>
	<body>
		<div class="v1"></div>
		<div class="v2"></div>
		<div class="v3"></div>
	</body>
</html>

效果如下:
在这里插入图片描述
我们可以设置div 属性float为left 或者right 都可
如我设置为float: left;(左浮动)
在这里插入图片描述
不过,这种方法也有一个缺陷,那就是必须要在后面清除浮动,否则对后面的效果会有一定的影响。

3. 伪类标签的使用(点击一个a标签之后,会展示一个下拉块)

如下面这个效果:
在这里插入图片描述
那么这个效果是怎样实现的呢?官网css样式我是不知道怎样实现,现在展示一下小编自己写的吧!
运行结果如下:
在这里插入图片描述
参考代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>CCTV</title>
    <style>
        .main{
     
     
            width: 139px;
            height: 45px;
            background-color: black;  /*设置背景为黑色*/
            margin: 0 auto;    /*设置为居中*/
        }
        .main .top{
     
     
            font-family: PingFangSC-Regular,Helvetica,Arial,Microsoft Yahei,sans-serif;
            font-size: 19px; /*设置字体的像素*/
            color: #CCCCCC;  /*设置字体颜色*/
            text-decoration: none;  /*去掉下划线*/
            line-height: 45px;  /*设置字体垂直居中*/
            display: inline-block;
            height: 45px;
            margin-left: 25px;
        }
        .main i{
     
     
            display: inline-block;
            width: 0px;
            height: 0px;
            border: 5px solid transparent;
            border-top: 6px solid white;
            transition: all 0.1s ease 0s;
        }
        .kjc{
     
     
            margin: 4px auto;
            width: 300px;
            height: 0px;
            overflow: hidden;
            background-color: #3b7796;
        }
        .kjc a{
     
     
            display: inline-block;
            width: 70px;
            height: 28px;
        }
        .kjc a img{
     
     
            width: 70px;
            height: 28px;
        }
        .main:hover + .kjc{
     
     
            height: 30px;
        }
        .main:hover{
     
     
            background-color: red;
        }
        .main:hover i{
     
     
            transform: rotate(180deg); /*旋转180度*/
        }
    </style>
</head>
<body>
    <div class="main">
        <a class="top" href="">频道大全</a>
        <i></i>
    </div>
    <div class="kjc">
        <a href=""><img src="./images/1530586773068_87.png" alt=""></a>
        <a href=""><img src="./images/1530586745032_233.png" alt=""></a>
        <a href=""><img src="./images/1530586763825_455.png" alt=""></a>
        <a href=""><img src="./images/1530586768395_210.png" alt=""></a>
    </div>
</body>
</html>

4.实现图片轮播(以CSDN官网上的那个效果为例子)

参考代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>测试</title>
    <style type="text/css">
        ul{
     
     
            position: relative;
            width: 508px;
            height: 208px;
            overflow: hidden;
            list-style-type: none;
        }
        ul li{
     
     
            position: absolute;
            top: 0px;
            left: 0px;
        }
    </style>
    <script type="text/javascript">
        window.onload=function(){
     
     
            var list=document.getElementsByTagName("li");
            var sum=0;
            var i=0,j=1;
            function sleep(n) {
     
     
                var start = new Date().getTime();
                //  console.log('休眠前:' + start);
                while (true) {
     
     
                    if (new Date().getTime() - start > n) {
     
     
                        break;
                    }
                }
            }
            function fun(){
     
     
                list[i].style.left=sum+"px";
                list[j].style.left=508+sum+"px";
                if(sum==-508){
     
     
                    sleep(8000);
                    sum=0;
                    if(i==2){
     
     
                        i=0;
                    }else{
     
     
                        i=i+1;
                    }
                    if(j==2){
     
     
                        j=0;
                    }else{
     
     
                        j=j+1;
                    }
                }
                sum=sum-1;
            }
            setInterval(fun,1);
        }
    </script>
</head>
<body>
    <ul>
        <li><img src="./images/CSDN2.png" alt=""></li>
        <li><img src="./images/CSDN3.jpg" alt=""></li>
        <li><img src="./images/CSDN4.jpg" alt=""></li>
    </ul>
</body>
</html>

运行结果:
在这里插入图片描述
这个代码还有一定的问题,就是运行起来比较占CPU,同时开始的运行效果不怎么的,读者如果有好的改进方法,可以在评论区留下自己优秀的代码啊!

猜你喜欢

转载自blog.csdn.net/qq_45404396/article/details/110406593