精华内容
下载资源
问答
  • 最近写网页经常需要将div在屏幕中居中显示,遂记录下几个常用的方法,都比较简单。...放上示范的html代码:<body> <div class="main">

    最近写网页经常需要将div在屏幕中居中显示,遂记录下几个常用的方法,都比较简单。
    水平居中直接加上<center>标签即可,或者设置margin:auto;当然也可以用下面的方法

    下面说两种在屏幕正中(水平居中+垂直居中)的方法
    放上示范的html代码:

    <body>
    	<div class="main">
    		<h1>MAIN</h1>
    	</div>
    </body>
    
    • 方法一:

    div使用绝对布局,设置margin:auto;并设置top、left、right、bottom的值相等即可,不一定要都是0。

    .main{
    	text-align: center; /*让div内部文字居中*/
    	background-color: #fff;
    	border-radius: 20px;
    	width: 300px;
    	height: 350px;
    	margin: auto;
    	position: absolute;
    	top: 0;
    	left: 0;
    	right: 0;
    	bottom: 0;
    }
    

    效果如图:
    这里写图片描述

    • 方法二:
      仍然是绝对布局,让left和top都是50%,这在水平方向上让div的最左与屏幕的最左相距50%,垂直方向上一样,所以再用transform向左(上)平移它自己宽度(高度)的50%,也就达到居中效果了,效果图和上方相同。
     .main{
    	text-align: center;
    	background-color: #fff;
    	border-radius: 20px;
    	width: 300px;
    	height: 350px;
    	position: absolute;
    	left: 50%;
    	top: 50%;
    	transform: translate(-50%,-50%);
    }
    
    • 方法三:
      对于水平居中,可以使用最简单的<center>标签,不过已经过时了,用法如下:
    <p><center>123</center></p>
    

    这个<center>标签就是相对于<p>标签里的文字,可以使其居中。

    由于center标签已经过时了,所以正规一点的话还是不建议使用的,可以使用如下的方式代替:

    <p style="text-align:center;">123</p>
    


    欢迎大家加入QQ群一起交流讨论,「吟游」程序人生——YinyouPoet
    展开全文
  • HTML+CSS代码制作3D旋转相册

    万次阅读 多人点赞 2018-09-19 21:37:53
    DOCTYPE html&amp;gt; &amp;lt;html&amp;gt; &amp;lt;head lang=&quot;en&quot;&amp;gt; &amp;lt;meta charset=&quot;UTF-8&quot;&amp;gt; &amp;lt;title&...

    欢迎大家访问我的个人博客 http://www.spicyboy.cn

    对于很多小伙伴给我的留言问题,我详细总结一下

    一、我的项目文件目录

    图片全部存放在images文件夹下,你把自己需要显示的图片放在images文件夹下就可以了,一共是11张图片,一张背景图
    我的图片命名为1.jpg,2.jpg……,可以自己更改图片名字,代码里也需要修改为自己的图片名字哦

    在这里插入图片描述

    二、index文件代码如下:(最后有百度网盘链接)

    <!DOCTYPE html>
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>3D旋转</title>
        <style type="text/css">
            *{padding: 0;
            margin: 0;}
            body,html{height:100%;}
            /* 背景图片在这里设置 */
            body{background-image: url("images/beijing.jpg");background-size: 100% 100%;}
            #box{width: 280px;
                height: 400px;
                position: fixed;
                left: 0;
                right: 0;
                top:0;
                bottom: 0;
                margin: auto;
                transform-style: preserve-3d;
                transform: rotateX(0deg) rotateY(0deg);
                animation: go 45s linear infinite;
               }
            #box img{width: 280px;
                     height: 400px;
                     position: absolute;
                     left: 0;
                     top: 0;
            }
            #box img:nth-child(1){
                transform: rotateY(0deg) translateZ(650px);}
            #box img:nth-child(2){
                transform: rotateY(36deg) translateZ(650px);}
            #box img:nth-child(3){
                transform: rotateY(72deg) translateZ(650px);}
            #box img:nth-child(4){
                transform: rotateY(108deg) translateZ(650px);}
            #box img:nth-child(5){
                transform: rotateY(144deg) translateZ(650px);}
            #box img:nth-child(6){
                transform: rotateY(180deg) translateZ(650px);}
            #box img:nth-child(7){
                transform: rotateY(216deg) translateZ(650px);}
            #box img:nth-child(8){
                transform: rotateY(252deg) translateZ(650px);}
            #box img:nth-child(9){
                transform: rotateY(288deg) translateZ(650px);}
            #box img:nth-child(10){
                transform: rotateY(324deg) translateZ(650px);}
    		@keyframes go {
    		    0%{transform: rotateX(0deg) rotateY(0deg);}
    		    25%{transform: rotateX(20deg) rotateY(180deg);}
    		    50%{transform: rotateX(0deg) rotateY(360deg);}
    		    75%{transform: rotateX(-20deg) rotateY(540deg);}
    		    100%{transform: rotateX(0deg) rotateY(720deg);}
    		
    		}
        </style>
    </head>
    	<body>
    		<div id="box">
    		    <img src="images/1.jpg">
    		    <img src="images/2.jpg">
    		    <img src="images/3.jpg">
    		    <img src="images/4.jpg">
    		    <img src="images/5.jpg">
    		    <img src="images/6.jpg">
    		    <img src="images/7.jpg">
    		    <img src="images/8.jpg">
    		    <img src="images/9.jpg">
    		    <img src="images/10.jpg">
    		</div>
    	</body>
    </html>
    
    

    三、运行效果图:

    在这里插入图片描述

    四、打包运行:

    有小伙伴想打包为APP的可以使用Hbuilder打包传到手机上,详细看下面教程
    https://blog.csdn.net/qq_42259469/article/details/84646570?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522158600294919195162559101%2522%252C%2522scm%2522%253A%252220140713.130056874…%2522%257D&request_id=158600294919195162559101&biz_id=0&utm_source=distribute.pc_search_result.none-task-blog-all_SOOPENSEARCH-1

    五、百度网盘下载

    链接: https://pan.baidu.com/s/1KrmOu-DVCN4kOSy_pPmvUw 提取码: yef9

    展开全文
  • 前端必看的8个HTML+CSS技巧

    万次阅读 多人点赞 2020-04-06 21:14:05
    CSS是一个很独特的语言。看起来非常简单,但是某种特殊效果看似简单,实现起来就颇有难度。

    8个前端常用HTML+CSS技巧教程

    点赞是动力 💪,关注是支持 👊!
    建议、疑问、话题欢迎在评论区留言哦!

    CSS是一个很独特的语言。看起来非常简单,但是某种特殊效果看似简单,实现起来就颇有难度。这篇文章主要是给在学习前端的童鞋分享一些新的CSS技巧,一些在前端教程和培训课堂中不会讲到的知识。第二就是让还在前端开发这条道路上的童鞋们,重新燃起对前端排版和特效的热爱和热情!🔥

    三钻分割线

    1. 固定底部内容

    固定底部内容

    这种是一个非常常见的布局方式,但是对于新手来说是比较常见的难题。

    这种布局方式在后台管理系统中比较常见,当我们内容不足浏览器窗口高度时,底部内容需要固定在底部。当内容超出了浏览器窗口高度,就会随着内容往后推。

    在有CSS3之前,实现这个效果是颇有难度的。浏览器窗口高度是会根据不同用户打开浏览器的情况,屏幕大小的差异和浏览器的缩放比例而变。我们需要借助JavaScript来实时获取浏览器高度进行运算才能实现。虽然说标题是说“固定”底部,但是我们想要的效果不是position: fixed。使用固定定位,在内容高于窗口高度时,就会挡住我们的内容。

    随着CSS3的来临,最完美的实现方式是使用Flexbox。实现的关键就是使用不太被关注的flex-grow属性,可以在我们的内容标签元素(比如div)中使用。在我们下面的例子里使用了main标签。


    我来讲解一下实现原理吧。

    在这里插入图片描述

    flew-grow是用来控制一个flex元素相对它同等级flex元素的自身可扩充的空间。如果我们使用flex-grow: 0,那这个flex元素就完全不会扩展了。所以我们需要把头部和底部之间的内容标签元素设置为flex-grow: 1或者flex-grow: auto,这样内容部分就会自动填充满头部和底部之外的所有空间。

    为了避免底部内容受内容部分扩充空间的影响,我们给footer底部元素flex-shrink: 0属性。flex-shrink的作用与flex-grow是恰恰相反,用来控制flex元素收缩的空间,这里我们给了flex-shrink: 0就是为了底部footer的大小不受影响。

    我们直接上HTML和CSS代码看看是怎么实现的。

    • HTML
    <div id="document">
    	<nav>
    		<h1>头部内容</h1>
    	</nav>
    	<main>
    		<p>可以添加更多内容看看底部的变化哦!</p>
    	</main>
    	<footer>
    		<h1>底部内容</h1>
    	</footer>
    </div>
    
    • CSS
    #document {
        height: 100vh;
        display: flex;
        flex-direction: column;
        background: #202020;
        font-family: microsoft yahei,wenquanyi micro hei,sans-serif !important;
    }
    
    nav, footer {
        background: #494949;
        display: flex;
        justify-content: center;
    }
    
    main {
        color: #bdbdbd;
        flex: auto;
    }
    
    footer {
        flex-shrink: 0;
    }
    
    * {
        margin: 0;
    }
    
    h1,
    p {
        padding: 15px;
    }
    
    nav > h1 {
        color: #82FCFD;
        text-shadow: 1px 1px 4px #00000080;
    }
    
    footer > h1 {
        color: #82FCFD;
        text-shadow: 1px 1px 4px #00000080;
    }
    

    🌟知识点总结:

    • flex-grow — 是用来控制一个flex元素相对它同等级flex元素的自身可扩充的空间
    • flex-shrink — 作用与flex-grow是恰恰相反,用来控制flex元素收缩的空间

    预览实际效果GitHub源码 | 喜欢的童鞋 🌟star 一下谢谢

    三钻分割线

    2. 悬停放大图片特效

    悬停放大图片特效
    悬停放大图片是一个特别吸引眼球的特效,比较常用于可点击的图片。当用户悬停鼠标在图片上,图片会稍微的放大。

    其实实现这个特效是非常简单的。首先我们需要一个div包裹这img标签,这个包裹层是用来遮挡住图片,当图片放大时不会出现图片超出我们规定的宽高以外。

    首先我们来讲讲div包裹的属性,我们需要给它一个固定的width宽和height高。然后我们必须给予这个元素overflow: hidden属性。让图片放大的时候不会超出这个div元素的宽高。有了这个包裹层,我们就可以编写img的各种效果了。

    我的例子里面用了transform: scale(1,1)作为悬停时的图片特效,这个transform是用于改变任何元素的属性的,然后scale是用于放大(整数就会放大)或者缩小(负数就会缩小)元素的。

    上代码让大家看看:

    • html body中放入
    <div class="img-wrapper">
      <img src="https://img-blog.csdnimg.cn/2020032122230564.png"/>
    </div>
    
    • CSS
    .img-wrapper {
      width: 400px;
      height: 400px;
      overflow: hidden;
      box-shadow: 0 1px 4px rgba(0, 0, 0, 0.6);
    }
    
    .img-wrapper img {
      height: 400px;
      -webkit-transition: 0.3s linear;
      transition: 0.3s linear;
    }
    
    .img-wrapper img:hover {
      transform: scale(1.1);
    }
    
    .img-wrapper {
      display: inline-block;
      box-sizing: border-box;
      border: 3px solid #000;
    }
    

    如果你们想让图片更加炫酷可以加上图片过滤属性filter,让图片变灰或者变深褐色,然后悬停时候出现更加炫酷的颜色变幻。灰化的属性是filter: grayscale(100%);,然后深褐色化的属性是filter: sepia(100%)。其实图片还有很多过滤属性的,大家有兴趣也可以去尝试一下哦!

    加入特殊效果的代码如下:

    • HTML
    <!-- 灰度过滤 -->
    <div class="img-wrapper">
      <img
        class="grayscale-img"
        src="https://img-blog.csdnimg.cn/2020032211021728.png"
      />
    </div>
    
    <!-- 深褐色过滤 -->
    <div class="img-wrapper">
      <img
        class="sepia-img"
        src="https://img-blog.csdnimg.cn/2020032122230564.png"
      />
    </div>
    
    • CSS
    /* ============== 
    * 灰度过滤 
    * ==============*/
    .grayscale-img {
      -webkit-filter: grayscale(100%);
      filter: grayscale(100%);
    }
    
    .grayscale-img:hover {
      -webkit-filter: grayscale(0);
      filter: grayscale(0);
    }
    
    /* ============== 
    * 深褐色过滤
    * ==============*/
    .sepia-img {
      -webkit-filter: sepia(100%);
      filter: sepia(100%);
    }
    
    .sepia-img:hover {
      -webkit-filter: sepia(0);
      filter: sepia(0);
    }
    

    🌟知识总结

    • transform — 用于改变元素
    • scale — 对元素进行放大和缩小
    • filter — 图片过滤器
    • grayscale — 灰度过滤
    • sepia — 深褐色过滤

    预览实际效果GitHub源码 | 喜欢的童鞋 🌟star 一下谢谢

    三钻分割线

    3. 瞬间黑暗模式

    瞬间黑暗模式
    最近微信也逃脱不了黑暗时代的到来,网页也很多都做了黑暗模式的兼容和主题。如果我们在做的一个网站想瞬间实现黑暗模式可以怎么实现呢?

    其实有一个很快的方式,我们可以使用inverthue-rotate两个CSS3过滤器来实现。

    filter: invert() — 是从01的刻度,1是从白变黑。
    filter: hue-rotate() — 用于改变你元素的颜色,同时或多或少保持原本相同的色系。这个属性的值可以从0deg360deg

    在我们页面的body标签上添加这两个属性,我们就可以快速尝试把我们的网站变成"黑暗模式"。这里需要注意的是,如果bodyhtml上没有设置background背景颜色,这个过滤就会不起效了哦。

    CSS的代码如下:

    html {
      background: #fff;
    }
    
    body {
      background: #fff;
      filter: invert(1) hue-rotate(270deg);
    }
    

    实现效果
    瞬间黑暗模式
    这里我们会发现图片的颜色会受影响,并不是很美观,使用css过滤器是无法完美切换黑暗模式的。不过使用JavaScript辅助就可以完美的切换黑暗模式。

    最近出了一个JavaScript辅助插件叫Darkmode.js

    🌓 Darkmode.js

    其实Darkmode.js运用的也是css里面的一个特性叫mix-blend-mode — “CSS 属性描述了元素的内容应该与元素的直系父元素的内容和元素的背景如何混合“。加上Javascript的辅助判断哪些页面上的元素需要黑化的,哪些是不需要黑化的。就会想我们之前那种做法,导致其他不需要黑化的元素,比如图片,受到影响导致颜色出现问题。

    使用Darkmode.js非常简单,只要在脚本里面添加以下代码就可以马上加入一个插件,

    <script src="https://cdn.jsdelivr.net/npm/darkmode-js@1.5.5/lib/darkmode-js.min.js"></script>
    <script>
      // 这些是这个插件的可配置项:
      var options = {
        bottom: "32px", // 定位底部距离 - 默认: '32px'
        right: "32px", // 定位右边距离 - 默认: '32px'
        left: "unset", // 定位左边距离 - 默认: 'unset'
        time: "0.5s", // 默认动画时间: '0.3s'
        mixColor: "#fff", // 需要改变的颜色 - 默认: '#fff'
        backgroundColor: "#fff", // 背景颜色 - 默认: '#fff'
        buttonColorDark: "#262728", // 黑暗模式下按钮颜色 - 默认: '#100f2c'
        buttonColorLight: "#fff", // 日间模式下按钮颜色 - 默认: '#fff'
        saveInCookies: true, // 是否在cookie保存当前模式 - 默认: true,
        label: "🌓", // 切换模式按钮图标 - 默认: ''
        autoMatchOsTheme: true // 是否自动根据系统适应模式 - 默认: true
      };
    
      let darkmode = new Darkmode(options);
      darkmode.showWidget();
    </script>
    

    如果你不希望用这个插件的默认按钮,你可以在你的JavaScript代码中自主控制。我们可以通过.toggle()方法来切换模式,同时可以使用.isActivated()来检测是否已经进入黑暗模式。

    const darkmode =  new Darkmode();
    darkmode.toggle();
    console.log(darkmode.isActivated()) // 如果已经进入黑暗模式会返回 true
    

    🌟知识总结

    • filter: invert() — 可以把页面从白变黑,也可以从黑变白。
    • filter: hue-rotate() — 用于改变你元素的颜色,同时或多或少保持原本相同的色系。
    • Darkmode.js — 瞬间实现黑暗模式。

    Invert方式黑暗模式:预览实际效果GitHub源码 | 喜欢的童鞋 🌟star 一下谢谢
    Darkmode.js黑暗模式:预览实际效果GitHub源码 | 喜欢的童鞋 🌟star 一下谢谢

    三钻分割线

    4. 自定义列表符号

    自定义列表符号
    ulli的无序列表有默认的符号·,但是在很多情况下我们希望可以给这个符号加入自己的样式和颜色,甚至是换成自定义的符号。默认的符号我们是无法做任何的样式处理,而且默认的符号在CSS属性里面只有几个选择可以使用,很多情况下都是无法满足我们的设计。

    其实自定义无序列表符号不难,我们只需要使用伪元素::beforecontent属性就可以实现。

    在我这个例子里面我做了两个任务列表,一个是待处理任务,一个是已完成任务,各自给了不一样的列表符号和颜色。

    实现原理

    一、首先我们禁用了ul的默认符号样式list-style: none

    二、在li:before伪元素上给予content内容值,待处理任务使用🗹,已完成任务li.completed:before使用

    三、为了展示效果更加好看我分别给了lili .completed两个不同的颜色

    上代码看看是怎么实现的吧:

    HTML

    <div>
      <h2>待处理</h2>
      <ul>
        <li>待办任务1</li>
        <li>待办任务2</li>
        <li>待办任务3</li>
        <li>待办任务4</li>
        <li>待办任务5</li>
      </ul>
    </div>
    <div>
      <h2>已完成</h2>
      <ul>
        <li class="completed">完成任务1</li>
        <li class="completed">完成任务2</li>
        <li class="completed">完成任务3</li>
      </ul>
    </div>
    

    CSS

    ul {
      list-style: none;
      color: #fff;
      font-size: 20px;
      border: 3px solid #000;
      padding: 1rem 2rem;
      min-height: 200px;
      margin: 15px 2rem 0 0;
      background: #323232;
      box-shadow: 0 1px 4px rgba(0, 0, 0, 0.6);
      border-radius: 8px;
    }
    
    li {
      padding: 0.3rem 0;
    }
    
    li::before {
      content: "🗹 ";
      color: aqua;
    }
    
    li.completed::before {
      content: "✔ ";
      text-decoration: none;
      color: greenyellow;
    }
    
    li.completed {
      text-decoration: line-through;
      color: #bdbdbd;
    }
    

    ::before::after伪元素加content属性可以用来做很多特殊的效果,也是当代前端排版比较常用的“魔法”。说到伪元素的使用,我再给大家说一个比较常用的使用场景。

    在管理后台或者是文章展示中,我们经常可以见到的“面包屑导航”也是用伪元素来插入每个目录中间的符号的。
    面包屑导航
    实现逻辑

    一、这个导航含有3个a标签,首先给每个a标签加入一个伪元素::after,然后在content属性插入/符号。

    二、然后使用a:first-child,这个伪类会选择到第一个a标签,然后使用content属性加入»符号。

    三、因为我们第一步在每个a标签的后面插入了/符号, 所以我们需要在最后一个a标签清除掉。这里我们使用:last-child选择到最后一个a标签,然后用content: " "属性把伪元素的内容清楚掉。

    HTML

    <div class="breadcrumb">
      <a>三钻</a>
      <a>前端</a>
      <a>教程</a>
    </div>
    

    CSS

    .breadcrumb {
      font-size: 1.6rem;
      color: #fff;
    }
    .breadcrumb a:first-child {
      color: #82fcfd;
    }
    .breadcrumb a:first-child::before {
      content: " » ";
    }
    .breadcrumb a::after {
      content: " /";
      color: #ef6eae;
    }
    .breadcrumb a:last-child::after {
      content: "";
    }
    

    🌟知识总结

    • ::before | ::after — 伪元素用于向某些选择器添加特殊的效果。
    • content — CSS 属性用于在元素的 ::before 和 ::after 伪元素中插入内容。使用content 属性插入的内容都是匿名的可替换元素。
    • :first-child — CSS伪类表示在一组兄弟元素中的第一个元素。
    • :last-child — CSS伪类代表父元素的最后一个子元素。

    自定义无序列表:预览实际效果GitHub源码 | 喜欢的童鞋 🌟star 一下谢谢
    面包屑导航:预览实际效果GitHub源码 | 喜欢的童鞋 🌟star 一下谢谢

    三钻分割线

    5. 图片视差效果

    图片视差效果
    这个超级炫酷的效果在官网中非常的受欢迎,这种效果可以给用户带来视觉冲击,也给我们的网站带来了活力。普通的网页图片会跟随着网页一起滑动,但是视觉差效果图就会固定在底部,只有图片所在的窗口上的元素会移动。

    仅使用CSS

    对你没有看错,这个效果只需要用到CSS就能轻易的实现!我们只要使用一个CSS背景图的属性background-attachment: fixed,这个特性会把背景相对于视口固定。即使一个元素拥有滚动机制,背景也不会随着元素的内容滚动。

    实现理论:

    一、在含有图片的元素中加入background: url()background-size: cover(第二个属性适用于定义图片为封面,可以让图片大小自动适应,在很大的屏幕也会显示完整的图片)

    二、然后附加固定背景图的属性background-attachment: fixed

    三、最后给这个元素加入一个高度height: 100%或者任意的高度height: 400px

    就那么简单哦!不用怀疑,马上上代码,大家都可以自己去试试哦!

    HTML

    <div class="wrapper">
       <div class="parallax-img"></img>
       <p>这里填写一堆文字就可以了,尽量多一点哦</p>
    </div>
    

    CSS

    .wrapper {
      height: 100wh;
    }
    .parallax-img {
      background-attachment: fixed;
      background-position: center;
      background-repeat: no-repeat;
      background-size: cover;
      height: 100%;
      background-image: url("http://ppe.oss-cn-shenzhen.aliyuncs.com/collections/182/7/thumb.jpg");
    }
    p {
      font-size: 20px;
      padding: 1.5rem 3rem;
      min-height: 1000px; // 当你的文字内容不够,也能撑出足够的高度来看到效果,当然如果你文字足够多,就不需要了
    }
    

    如果想做到我动图里面一样的效果,或者想看是怎么实现的,可以查看下面总结里面的“预览实际效果”或者看“GitHub源码”。

    🌟知识总结

    • background-attachment: fixed — 把背景相对于视口固定。即使一个元素拥有滚动机制,背景也不会随着元素的内容滚动。
    • background-size: cover — 可以让图片大小自动适应,在很大的屏幕也会显示完整的图片。

    预览实际效果GitHub源码 | 喜欢的童鞋 🌟star 一下谢谢


    使用CSS + JavaScript

    在这里插入图片描述
    有些童鞋可能没有被这个震撼到或者还是觉得不够刺激。那我们再来一个高级例子,上面的例子在滑动的时候图片是固定死的。如果我们加上JavaScript的助力,我们可以让窗口的图片缓慢的跟随这个页面滑动,使得效果更有动力和更有冲击感。

    实现理论
    首先讲一下排版,因为我们需要在我们滑动页面的时候使用JavaScript偏移图片,所以我们需要给图片一个CSS属性让我们可以让图片可以根据一个速度来往上或者往下移动。这个例子里面我们让所有图片包裹在一个div里面,class名为block。这个div给予相对定位属性position: relative,这个时候我们就可以在里面加入图片,然后让图片绝对定位position: absolute在这个div盒子里面。

    但是图片是可能很大的,我们需要把图片不超出我们定义个盒子,所以我们的div同时也给予了overflow: hidden和一个高度height: 100%。这样图片超出div盒子就会被隐藏。

    布局代码如下:

    <div class="block">
      <img
        src="https://unsplash.it/1920/1920/?image=1005"
        data-speed="-1"
        class="img-parallax"
      />
      <h2>视差速度 -1</h2>
    </div>
    <div class="block">
      <img
        src="https://unsplash.it/1920/1920/?image=1067"
        data-speed="1"
        class="img-parallax"
      />
      <h2>视差速度 1</h2>
    </div>
    
    html, body{
      margin: 0;
      padding: 0;
      height: 100%;
      width: 100%;
      font-family: 'Amatic SC', cursive;
    }
    .block{
      width: 100%;
      height: 100%;
      position: relative;
      overflow: hidden;
      font-size: 16px;
    }
    .block h2{
      position: relative;
      display: block;
      text-align: center;
      margin: 0;
      top: 50%;
      transform: translateY(-50%);
      font-size: 10vw;
      color: white;
      font-weight: 400;
    }
    .img-parallax {
      width: 100vmax;
      z-index: -1;
      position: absolute;
      top: 0;
      left: 50%;
      transform: translate(-50%,0);
      pointer-events: none
    }
    

    实现这个布局,在你滑动的时候,图片是不会移动的。因为最后一步就是加入JavaScript的辅助,让图片活起来。

    <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
    <script>
    // 循环获取每一个图片元素
    $(".img-parallax").each(function () {
      var img = $(this);
      var imgParent = $(this).parent();
      function parallaxImg() {
        var speed = img.data("speed"); // 获取每张图片设置了的偏移速度
        var imgY = imgParent.offset().top; // 获取图片盒子所在的Y位置
        var winY = $(this).scrollTop(); // 获取当前滑动到的位置
        var winH = $(this).height(); // 获取浏览器窗口高度
        var parentH = imgParent.innerHeight(); // 获取图片盒子的内高度
    
        // 浏览器窗口底部的所在位置
        var winBottom = winY + winH; 
    
        // 当前图片是否进入浏览器窗口
        if (winBottom > imgY && winY < imgY + parentH) {
          // 运算图片需要开始移动的位置
          var imgBottom = (winBottom - imgY) * speed;
          // 运算出图片需要停止移动的位置
          var imgTop = winH + parentH;
          // 获取从开始移动到结束移动的%(根据开始与结束像素 + 移动速度)
          var imgPercent = (imgBottom / imgTop) * 100 + (50 - speed * 50);
        }
        img.css({
          top: imgPercent + "%",
          transform: "translate(-50%, -" + imgPercent + "%)",
        });
      }
      $(document).on({
        scroll: function () {
          parallaxImg();
        },
        ready: function () {
          parallaxImg();
        },
      });
    });
    </script>
    

    🌟知识总结

    • position: relative — 相对定位。
    • position: absolute — 绝对定位。
    • overflow: hidden — 如果需要,内容将被剪裁以适合填充框。 不提供滚动条。

    预览实际效果GitHub源码 | 喜欢的童鞋 🌟star 一下谢谢

    三钻分割线

    6. 裁剪图像的动画

    裁剪图像的动画
    在有CSS3之前裁剪图片实现也是颇有难度的。现在我们有了两个非常方便简单的CSS3属性可以实现裁剪,那就是object-fitobject-position, 这两个属性可以让我们改变图片的大小,但是不影响图片的长宽比。

    当然我们可以使用图片处理工具或者使用JavaScript等插件来实现图片裁剪功能。但是因为有了CSS3的属性,我们不只可以裁剪,我们还可以用裁剪的属性来做图片的动态效果。

    为了让我们的例子更加简单,我们这里使用了<input type="checkbox">复选框元素,这样我们就可以使用:checked的伪类来触发启动效果。所以在例子里面我们完全不需要JavaScript的协助。

    实现原理:

    一、首先给予图片一个宽高height: 1080pxwidth: 1920px

    二、然后用CSS选择器,锁定当input被选中后img标签的样式变化。当被选中时,给图片设定一个新的宽高,这里我们给宽高各自500像素:width: 500pxheight: 500px

    三、然后我们加上了过渡效果和时间让图片改变宽高时有动画过渡效果:transition: width 2s, height 4s;

    四、最后加上object-fit: coverobject-position: left-top这两个属性来保持图片的宽高比例,这样就大功告成了!

    我们来看看完成的代码:

    勾选裁剪图片 <input type="checkbox" />
    <br />
    <img
      src="https://img-blog.csdnimg.cn/2020032122230564.png"
      alt="Random"
    />
    
    input {
      transform: scale(1.5); /* 只是用来放大复选框大小 */
      margin: 10px 5px;
      color: #fff;
    }
    
    img {
      width: 1920px;
      height: 1080px;
      transition: 0s;
    }
    
    /* css选择器锁定复选框被选中时的状态 */
    input:checked + br + img {
      width: 500px;
      height: 500px;
      object-fit: cover;
      object-position: left-top;
      transition: width 2s, height 4s;
    }
    

    🌟知识总结

    • object-fit — CSS 属性指定可替换元素的内容应该如何适应到其使用的高度和宽度确定的框。
    • object-position — 用来切换被替换元素的内容对象在元素框内的对齐方式。
    • transition — 过渡可以为一个元素在不同状态之间切换的时候定义不同的过渡效果。

    预览实际效果GitHub源码 | 喜欢的童鞋 🌟star 一下谢谢

    三钻分割线

    7. 混合模式(Blend)

    混合模式
    如果有使用过Photoshop的同学对blend混合模式应该是非常熟悉了,我们都知道混合模式是非常强大,也是p图时非常常用的一个功能。但是你们有没有想象过可以在浏览器的CSS中直接使用呢?对我们不需要设计师给我们做图,我们前端也可以实现混合模式了。

    在CSS中我们不只可以对background背景加入混合模式,我们可以对任何一个元素的自带背景加入混合模式,让你可以做出很多之前没有想过的效果和排版。

    往一个元素加入混合模式,我们只需要使用到一个CSS属性mix-blend-mode即可。

    简单实现原理:

    首先我们只需要加一个h1标题标签

    <h1>混合模式:颜色减淡</h1>
    

    然后我们给h1标签加入mix-blend-mode中的颜色减弱模式color-dodge,但是要注意的是我们需要给bodyhtml加入背景颜色background: white,要不你会发现这个效果会无效。因为h1我们没有给颜色,会自动往上级继承,并且混合模式是针对背景颜色的过滤,所以body和html需要有背景颜色才行。

    h1 {
       mix-blend-mode: color-dodge;
       font-family: yahei;
       font-size: 5rem;
       text-align: center;
       margin: 0; 
       padding: 20vh 200px;
       color: #D1956C;
     }
    
     html,
     body {
       margin: 0;
       background-color: white;
     }
    
     body {
    
       background-image: url(https://images.unsplash.com/photo-1505567745926-ba89000d255a?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=3302&q=80);
       background-repeat: no-repeat;
       background-size: cover;
       min-height: 100vh;
       overflow: hidden;
     }
    

    换换背景图和h1标签的字体颜色就可以弄出各种不同的特效了。

    颜色减弱
    颜色减弱

    🌟知识总结

    • mix-blend-mode — CSS 属性描述了元素的内容应该与元素的直系父元素的内容和元素的背景如何混合。

    预览实际效果GitHub源码 | 喜欢的童鞋 🌟star 一下谢谢

    三钻分割线

    8. 瀑布流布局

    瀑布流布局

    CSS GridFlexbox让我们可以更简便,更容易和更快的实现各式各样的响应布局,并且让我们快捷方便的在布局中实现横向剧中和竖向剧中。但是回想一下以前是颇为困难的。

    虽然这些新出的布局方式可以让我们解决很多以前的布局难题,但是像瀑布流布局这种,就无法用它们简单来实现了。因为瀑布流一般来说都是宽度一致,但是高度是根据图片自适应的。并且图片的位置也是根据在上方图片的位置而定的。

    其实最好实现瀑布流布局的办法就是用CSS的列属性套件,这套属性大多数都是用于排版杂志中的文本列。但是用于布局瀑布流也是特别实用哦。因为以前需要实现瀑布流,就必须有JavaScript的辅助来计算图片高度然后决定每张图片的定位和位置,所以现在有了列属性就可以使用纯CSS实现了。

    实现原理:

    实现这个布局,首选我们需要把所有的内容先包裹在一个div元素里面,然后给这个元素column-widthcolumn-gap属性。

    然后,为了防止任何元素被分割到两个列之间,将column-break-inside: avoid添加到各个元素中。

    神奇的效果就完美实现了,零JavaScript。

    我们来看看代码:

    <div class="columns">
      <figure>
        <img src="https://source.unsplash.com/random?city" alt="" />
      </figure>
      <figure>
        <img src="https://source.unsplash.com/random?night" alt="" />
      </figure>
      <figure>
        <img src="https://source.unsplash.com/random?developer" alt="" />
      </figure>
      <figure>
        <img src="https://source.unsplash.com/random?building" alt="" />
      </figure>
      <figure>
        <img src="https://source.unsplash.com/random?water" alt="" />
      </figure>
      <figure>
        <img src="https://source.unsplash.com/random?coding" alt="" />
      </figure>
      <figure>
        <img src="https://source.unsplash.com/random?stars" alt="" />
      </figure>
      <figure>
        <img src="https://source.unsplash.com/random?forest" alt="" />
      </figure>
      <figure>
        <img src="https://source.unsplash.com/random?girls" alt="" />
      </figure>
      <figure>
        <img src="https://source.unsplash.com/random?working" alt="" />
      </figure>
    </div>
    
    .columns {
      column-width: 320px;
      column-gap: 15px;
      width: 90%;
      max-width: 1100px;
      margin: 50px auto;
    }
    .columns figure {
      display: inline-block;
      box-shadow: 0 1px 2px rgba(34, 25, 25, 0.4);
      column-break-inside: avoid;
      border-radius: 8px;
    }
    .columns figure img {
      width: 100%;
      height: auto;
      margin-bottom: 15px;
      border-radius: 8px;
    }
    

    🌟知识总结

    • column-width — CSS属性建议一个最佳列宽。 列宽是在添加另一列之前列将成为最大宽度。
    • column-width — 该 CSS 属性用来设置元素列之间的间隔 (gutter) 大小。
    • column-break-inside — 设置或检索对象内部是否断。

    预览实际效果GitHub源码 | 喜欢的童鞋 🌟star 一下谢谢

    三钻分割线

    总结

    总结
    我希望这8个前端小技巧和特效对大家有帮助,或多或少有吸收一点新的前端知识。这篇文章提到的内容,其实很多都是值得深挖和学习的。有一些例子我做的比较简单,但是其实是有无限的可能性。喜欢前端的童鞋们,让我们继续在前端领域中一起深挖,让我们的热爱无限的燃烧起来吧!


    在最后我想给大家讲一下我对前端的热爱和态度。

    回想前端这几年,发展真的是突飞猛进,从前端排版,HTML5+CSS3做H5页面,到前端组件化,各种UI框架满天飞。

    一开始我随着热潮用起了UI框架,起初觉得特别方便,来一个新的项目就直接上一个UI框架,研发速度也非常快。但是久而久之就觉得前端开发变成了处理数据,对接接口,实现交互。

    某天在阅览国外的一些前端设计和框架的时候,我突然发现国内多数的前端开发者都不再怎么使用CSS3做出一些很好玩的布局和特效了。现在市面上的系统和页面都是千篇一律,普遍都是用一些知名的UI框架搭建系统和APP,基本自己动手去排版已经少之又少。前端已不再是以前的前端,缺少了灵魂。

    但是我们回想一下,我们刚刚开始学习前端的时候,让我们最有成就感,觉得前端特别有意思的那种感觉。就是那种让我们觉得神乎奇迹,不可思议的布局,特效和交互。那种感觉自己成功实现了很优美,很炫酷的页面和特效的感觉,让我们越做越来劲,越做越是兴奋。

    但是在某些公司,研发部都是要求快速开发,UI设计部门也是受到时间的控制和限制,所以逐步走进了UI框架的限制之中。都是围绕这一些UI框架来设计和开发系统和应用。

    作为一名热爱前端的开发者,我还是坚持在绝大多数的项目中,自己排版和实现页面交互特效。然后使用UI框架作为辅助,主要是用来减轻一些小组件和常用组建的快速实现。(可以说我是比较追求完美和外貌协会的程序员 😂)

    推荐阅读

    • 🔥《写给想学和在学编程的你们,学习编程的7个好处》 — 其实选择学编程是能改变人生的。可能起初很多人学编程,报了一个编程培训班,为了就是能拿到更高的工资或者有更好的工作环境。最后坚持着坚持着,最后会发现编程还会给我们带来很多个人能力和技能上的提升。
    • 🔥《如何高效学习编程》 — 编程确实不是一件容易的事情,除了要有较强的逻辑思维,还需要花大量的时间和集中力来提升或者维持一定的高度。
    • 🔥《5大法则助你 成为更出色的开发者》 — 这篇文章传授5大法则助我们成为更出色的开发者,在众多开发者中脱颖而出的诀窍,也会在我们的技术职业生涯中给我们很多的帮助。
    • 🔥《用“易于改编”原则,提升编程水平,写出更好的代码》 — 无论新手还是资深开发者都会经常问一个问题,“怎么写好的代码?”,要知道怎么写好代码,首先我们要知道怎么样才是好的代码。要有明确的目标,才能知道如何达成目标。在《程序员修炼之道》中提到的“ETC Principle” – 易于改编原则。这个原则看似简单,但是我们越是深入思考越是觉得“简约而不简单”。
    展开全文
  • css常用代码大全,html+css代码

    万次阅读 多人点赞 2017-12-28 21:24:46
    css常用代码大全,html+css代码 html+css可以很方便的进行网页的排版布局,还能减少很多不必要的代码。 一.文本设置 1、font-size: 字号参数  2、font-style: 字体格式 3、font-weight: 字体粗细 ...

    css常用代码大全,html+css代码


    html+css可以很方便的进行网页的排版布局,还能减少很多不必要的代码。

    一.文本设置
    1、font-size: 字号参数 
    2、font-style: 字体格式
    3、font-weight: 字体粗细
    4、颜色属性
    color: 参数
    注意使用网页安全色

    二、超链接设置
    text-decoration: 参数
    主要用途是改变浏览器显示文字链接时的下划线。 
    参数取值范围: 
    underline:为文字加下划线 
    overline:为文字加上划线 
    line-through:为文字加删除线 
    blink:使文字闪烁 
    none:不显示上述任何效果

    三、背景
    1、背景颜色
    background-color: 参数
    2、背景图片
    background-image: url(URL)
    URL就是背景图片的存放路径,none表示无。
    3、背景图片重复
    background-repeat: 参数
    参数取值范围 :
    no-repeat:不重复平铺背景图片
    repeat-x:使图片只在水平方向上平铺
    repeat-y:使图片只在垂直方向上平铺
    如果不指定背景图片重复属性,浏览器默认的是背景图片向水平、垂直两个方向上平铺。
    4、背景图片固定
    背景图片固定控制背景图片是否随网页的滚动而滚动。如果不设置背景图片固定属性,浏览器默认背景图片随网页的滚动而滚动。为了避免过于花哨的背景图片在滚动时转移浏览者的注意力,一般都设为固定
    background-attachment: 参数 
    参数取值范围:
    fixed:网页滚动时,背景图片相对于浏览器的窗口而言,固定不动
    scroll:网页滚动时,背景图片相对于浏览器的窗口而言,一起滚动

    四、区块
    1、单词间距 
    word-spacing: 间隔距离 
    2、字母间距 
    letter-spacing: 字母间距
    3、文本对齐
    text-align: 参数
    参数的取值:
    left:左对齐
    right:右对齐
    center:居中对齐
    justify:相对左右对齐
    4、垂直对齐
    vertical-align: 参数
    top:顶对齐
    bottom:底对齐
    text-top:相对文本顶对齐
    text-bottom:相对文本底对齐
    baseline:基准线对齐
    middle:中心对齐
    sub:以下标的形式显示
    super:以上标的形式显示
    5、文本缩进
    text-indent: 缩进距离
    12px相当于一个文字距离
    6、空格
    white-space: 参数
    normal 正常
    pre 保留
    nowrap 不换行
    7、显示样式 
    display: 参数 
    参数取值范围: 
    block:块级元素,在对象前后都换行 
    inline:在对象前后都不换行 
    list-item:在对象前后都换行,增加了项目符号 
    none:无显示

    五、方框
    1、height 高度
    2、width 宽度
    3、padding 内边距
    4、margin 外边距
    5、float(浮动):可以让块级元素在一行中排列,例如横向菜单。 
    6、clear 清除浮动

    六、边框
    1、样式
    border style 参数
    边框样式的参数:
    none:无边框 
    dotted:边框为点线
    dashed:边框为长短线
    solid:边框为实线
    double:边框为双线
    2、宽度
    border width 参数
    3、颜色
    border color 参数

    七、列表
    list-style-type 列表样式
    不同浏览器的列表符可能不相同,可能会影响到网页,所以网页中的列表大多都是由背景图片显示。
    控制用户界面的样式

    八、鼠标
    cursor:鼠标形状参数 
    CSS鼠标形状参数表: 
    鼠标形状:CSS代码
    style="cursor:hand"      手形
    style="cursor:crosshair"   十字形
    style="cursor:text"      文本形
    style="cursor:wait"      沙漏形
    style="cursor:move"     十字箭头形:
    style="cursor:help"      问号形
    style="cursor:e-resize"    右箭头形
    style="cursor:n-resize"    上箭头形
    style="cursor:nw-resize"   左上箭头形
    style="cursor:w-resize"    左箭头形
    style="cursor:s-resize"    下箭头形 
    style="cursor:se-resize"   右下箭头形 
    style="cursor:sw-resize"   左下箭头形
    展开全文
  • HTML+CSS大作业

    万次阅读 多人点赞 2018-12-21 14:40:48
    HTML+css大作业展示(原创) 四A级景区重渡沟简介 &amp;lt;img src=&quot;images/logo3.png&quot; alt=&quot;logo&quot; width=&quot;250px&quot; /&amp;gt;...
  • HTML+CSS+JavaScript基础

    千人学习 2018-12-19 18:46:50
    本阶段内容主要涵盖技术: HTML + CSS + JavaScript基础,同时包括JS函数式框架jQuery
  • html+css+js实现星空特效

    万次阅读 多人点赞 2020-09-04 22:02:39
    html+css+js实现星空特效 废话不多说直接上代码,效果是一个星空旋转和文字逐渐出现的效果,文字是逐渐出现的,星空中的小球是旋转的 效果: <!DOCTYPE html> <html lang="en"> <head> <meta ...
  • HTML+CSS实现导航条及下拉菜单

    万次阅读 多人点赞 2019-08-06 15:20:34
    html+css实现下拉菜单
  • HTML+CSS网页设计与布局从入门到精通

    千次下载 热门讨论 2013-03-18 19:28:53
    HTML+CSS网页设计与布局从入门到精通》紧密围绕网页设计师在制作网页过程中的实际需要和应该掌握的技术,全面介绍了使用HTMLCSS进行网页设计和制作的各方面内容和技巧。 《HTML+CSS网页设计与布局从入门到精通》...
  • #3使用html+css+js制作网页 制作登录网页

    万次阅读 多人点赞 2020-01-31 20:23:54
    #3使用html+css+js制作网页 制作登录网页 详细教程
  • 常见的页面布局方式:表格布局、DIV+CSS布局、框架布局。 表格布局:用来显示较多的数据,如OA系统、ERP系统或CRM系统。(一般用在局部) DIV+CSS布局:相对来说最灵活的布局方式,完全实现内容和样式的分离。 ...
  • HTML+CSS登录界面

    万次阅读 多人点赞 2020-05-06 17:10:26
    今天学习了一个HTML+CSS登录界面 效果图如下: 背景图片可以选取自己喜欢的,以下是实现代码: login.html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>登录</...
  • HTML+CSS

    千次阅读 热门讨论 2014-08-07 22:16:22
    最近接触的新词真是越来越多啦,像什么HTML、XTML、CSS、div 还有牛腩竟然是个人不是吃的,而且还是个大牛,像设计模式里的大鸟一样让人崇拜……   说说最近的学习吧,看了牛腩视频才知道SQLhelper的由来,才真正...
  • 个人主页设计(HTML+CSS+JS)

    千次阅读 多人点赞 2020-07-08 00:29:13
    个人主页设计(HTML+CSS+JS) github链接:点此跳转 样例跳转:样例四<–这里跳转(ps.请勿使用谷歌游览器,里面有flash插件,谷歌无法播放) 代码见github。
  • html+css+js 实现图片轮播效果

    千次阅读 多人点赞 2020-12-19 11:47:45
    html+css+js 实现图片轮播效果 图片轮播效果: 会自动 向左 || 向右 切换图片 能手动点击按钮切换图片 多用于商品展览等等 ——首先我们创建一个盒子进行展览,然后一个< ul>,< li>来存每张图片。 话...
  • html+css入门

    万人学习 2018-05-15 12:22:07
    本课程是专门为初级量身定制的入门课程,我们不讲学了以后就年薪几十万的鸡汤,也不拿成功学员说...课程主要分为以下几个部分 1.html入门 2.css入门 3.div+css布局 4.css选择器加强 5.百度云下载页实战 6.表格 7.表单
  • Web前端入门 HTML+CSS基础

    千次阅读 多人点赞 2020-09-17 10:10:49
    HTML+CSS基础知识总结 1.web标准 结构上来说html页面分为head和body两部分 head里面包含meta标签(UTF8字符集)、title(网页标题)、link(外部样式表引入) body里面是各种常用的标签。 web页面标准...
  • HTML+CSS模拟时钟转动

    千次阅读 2020-09-20 14:56:31
    HTML+CSS模拟时钟转动 项目代码评论区分享
  • html+css+js期末课程设计

    千次阅读 多人点赞 2020-06-17 10:02:51
    html+css+js课程设计 期末课程设计 本人H5的期末作业(属于H5入门课程) 得了90+的分数 内容 内容包括: 轮播 动画 插入音乐 等等(做的太久了,具体用到什么也都忘了) 纯手工码制,期末参考之利器。 预览 下载 ...
  • 如何使用HTML+CSS画三角形

    万次阅读 多人点赞 2017-11-14 20:36:12
    如何使用HTML+CSS画三角形
  • HTML+CSS+JS

    千次阅读 2019-01-29 15:59:19
    HTML+CSS+JS 1. HTML(超文本标识语言)http://www.w3school.com.cn/html/index.asp 1.1 基本结构 &amp;lt;!doctype html&amp;gt; &amp;lt;!-- 文档声明,声明位于文档中的最前面的位置 --&amp;...
  • HTML+CSS初级入门

    万人学习 2017-07-22 13:34:05
    本课程主要目标是教给大家: 1)HTMLCSS能干什么? 2)HTMLCSS是什么? 3)HTMLCSS怎么用,这里会讲解常用到的HTMLCSS的使用规则 4)一步一步开发一个响应式的页面 QQ交流群:659123270
  • HTML+CSS写网站首页

    千次阅读 多人点赞 2019-10-13 17:26:55
    (html+css写网站首页) HTML <html> <head> <meta charset="UTF-8"> <title>网站建设</title> <link rel="stylesheet" type="text/css" href="css/Travel.css" /> <...
  • HTML+CSS实现导航条

    千次阅读 2020-12-26 19:11:43
    HTML+CSS实现导航条: 1、HTML部分源代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>编译遇见未来</title> <link rel="stylesheet" ...
  • HTML期末作业-仿美食菜谱网站模板(HTML+CSS+JavaScript)

    千次阅读 多人点赞 2021-06-21 11:04:24
    HTML期末作业-仿美食菜谱网站HTML模板(HTML+CSS+JavaScript) 美食菜谱网站模板,DIV+CSS布局设计,自适应分辨率,兼容PC端和移动端,全套模板,包括首页、饮食健康、美食达人、菜谱大全、登录等HTML企业网站模板页面...
  • 本教程专门针对编程小白而制作,是学习HTML+CSS很好的入门教程。学完后能写出你看到的静态页面。
  • 编程小白福音系列之HTML+CSS入门教程

    千人学习 2019-04-03 15:11:34
    本教程专门针对编程小白而制作,是学习HTML+CSS很好的入门教程。从H5的行业介绍开始,通过创建一个博客、模仿百度新闻列表、百度云盘、登录表单等实战案例来讲解HTMLCSS知识;讲师以完美的逻辑思维分析案例讲解...
  • HTML+CSS实现动态背景登录页面

    万次阅读 多人点赞 2017-06-22 23:00:06
    HTML+CSS实现简单动态背景登录页面设计
  • 简易html+css+js计算器

    千次阅读 2016-08-17 19:59:36
    简易html+css+js计算器简易htmlcssjs计算器HTML CSS JavaScript 效果图心得体会 HTML<!DOCTYPE html> <html lang="en"> <link rel="stylesheet" href="calculator.css" type="text/css"> <s
  • Html+css3动画效果

    千次阅读 2019-01-18 12:25:16
    Html+css3动画效果 开发工具与关键技术:DW 作者:彭春怡 撰写时间:2019/1/16 1.下面是通过html+css3完成的一个动画效果,“跳跳球”。实现的代码如图所示: Html代码: Css3 代码: 通过“@...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,641,448
精华内容 656,579
关键字:

html+css