H5+C3+移动Web笔记

目录

HTML5笔记

web标准

单标签

双标签

标签的关系

路径

列表

表格

表单

CSS笔记

基础选择器

设置字体的相关样式

选择器Plus版

元素的显示模式

CSS三大特性

盒子模型

选择器Pro Plus版        

伪元素( 一般用在双标签身上)

浮动

定位(position)

元素自身的显示与隐藏

使用CSS3画小三角

属性选择器

移动Web笔记

2D转换

位移--transform:translate

旋转--transform:rotate

缩放--transform:scale

transform复合写法

动画--animation

3D转换

透视距离

旋转

3D呈现

Flex弹性盒子布局

父元素属性

子元素属性

less+rem+媒体查询布局

rem单位

媒体查询

Less基础

rem适配方案


HTML5笔记


web标准

        结构标准(HTML)、表现标准(CSS)、行为标准(JS)

单标签

1.换行标签:

<br>

2.水平线标签:

<hr>

3.图片标签:

    <!-- src:图片的引入路径 alt:显示图片失败时,显示的替代性文本 title:鼠标悬停时显示的文本 -->
    <img src="" alt="" title="" width="" height="">

双标签

1.标题标签:

    <!-- 标题标签 -->
    <!-- h系列的标签 -->
    <!-- h标签的特点
        ①从h1-h6文字大小依次减小
        ②文字都是加粗显示
        ③标题标签自带上下间距
        ④标题标签是独占一行的
        补充:h1标签有助于网络搜索的排名 所以logo和新闻标题都用h1
    -->
    <h1>我是h1</h1>
    <h2>我是h2</h2>
    <h3>我是h3</h3>
    <h4>我是h4</h4>
    <h5>我是h5</h5>
    <h6>我是h6</h6>

2.段落标签:

    <!-- 段落标签 p标签 -->
    <!-- 特点
            ①自带上下间距
            ②独占一行
    -->

    <p>阿巴阿巴</p>

3.文本格式化标签:

    <!-- 前者都是老版本标签,后者都是新版本具有强调语气,利于优化SEO -->
    <h2>加粗标签</h2>
    <b>加粗</b>
    <strong>我也是加粗</strong>

    <h2>下划线标签</h2>
    <u>下划线</u>
    <ins>我也是下划线</ins>

    <h2>倾斜标签</h2>
    <!-- 特殊情况中,或用i标签来展示小图标 -->
    <i>倾斜</i>
    <em>我也是倾斜</em>

    <h2>删除线标签</h2>
    <s>删除线</s>
    <del>我也是删除线</del>

4.音频标签和视频标签:

    <h2>音频标签</h2>
    <audio src="../images/music.mp3" controls autoplay  loop ></audio>

    <h2>视频标签</h2>
    <video src="../images/video.mp4" controls loop autoplay muted  ></video>

    <!-- controls显示播放控件 loop循环播放 视频标签中autoplay自动播放得配合muted使用(静音)  -->

    <!-- 音频目前支持三种格式:MP3 Wav Ogg
         视频目前支持:MP4 WebM Ogg
    -->

5.超链接标签:

    <a href="./12.视频标签和音频标签.html" target="_blank">点我试试</a>
    <a href="../images/cat.gif" target="_blank"><img src="../images/dog.gif"></a>
    <a href="../新建 XLS 工作表.xls" title="1111">excel文件</a>
    <!--href:要跳转到的目标地址 
            可以网络地址
            可以本地的html文件
            可以本地的图片文件
            可以本地的excel文件
        target:
            _self:在当前窗口打开新的页面
            _blank:新建窗口打开页面,保留原来的页面            
    -->

标签的关系

        嵌套和非嵌套的关系


路径

        绝对路径:1.带有跟盘符的路径(Y:\Myself\xxxx) 2.网络地址

        相对路径:./ 当前目录  ../上一级目录  xxx/xxxxx下一级目录


列表

1.无序列表

    <h3>无序列表</h3>
    <!-- 特点:
            每一个li标签前面都有黑色小圆点
            ul和li都独占一行
            ul标签自带间距
            ul标签和li标签之间不能放其他的任何标签
            li标签可以放任何的标签
    -->
    <ul>
        <li>啊啊啊啊</li>
        <li>哇哇哇哇</li>
        <li>水水水水</li>
        <li>顶顶顶顶</li>
    </ul>

2.有序列表

    <h3>有序列表</h3>
    <!-- 
        ol标签属性
            start:设置开始值
            type:设置ol的type类型
     -->
    <ol start="3" type="i">
        <li>啊啊</li>
        <li>宝宝</li>
        <li>试试</li>
        <li>大地</li>
    </ol>

表格

    <!--表格标签属性
        border:设置表格的边框
        width:设置表格的宽度
        height:设置表格的高度 
        aligin:设置表格位置
            left左对齐
            right右对齐
            center居中 
        cellspacing设置单元格与单元格之间的距离 一般为0
        cellpadding设置单元格与单元格内容之间的距离       
    -->
    <table border="1" width="400" height="200" align="center" cellspacing="0" >
        <tr align="center">
            <td>姓名</td>
            <td>年龄</td>
            <td>性别</td>
            <td>籍贯</td>
        </tr>
        <tr align="center">
            <td>张三</td>
            <td>22</td>
            <td>男</td>
            <td>未知</td>
        </tr>
        <tr align="center">
            <td>李四</td>
            <td>21</td>
            <td>女</td>
            <td>你猜</td>
        </tr>
    </table>

表格的合并

       1.确定要合并的单元格是哪几个

        2.根据左上原则(左右合并保留左边,上下合并保留上边),确定保留谁删除谁

        3. 确定使用的是rowspan(跨行)还是colspan(跨列),给保留的单元格设置

表单

    <form>
        <p>
            昵称: <input type="text" placeholder="请输入用户名" name="username">
        </p>
        <p>
            密码: <input type="password" placeholder="请输入密码" name="pwd">
        </p>
        <p>
            <!-- checked 默认选中一个 -->
            请选择性别:
            <!-- label的作用:图片和文字点击都可以选中 -->
            <!-- 2个以上单选按钮要想实现单选(只能选中一个)效果 必须有相同的name属性 -->
            <label><input type="radio" name="sex" checked >男</label>  <!-- lable的第一种写法 -->
            <input type="radio" name="sex"  id="ok"> <label for="ok">女</label> <!-- lable的第二种写法 input里定义一个id lable里的for == id -->
        </p>
        <p>
            兴趣爱好:
            <label><input type="checkbox" name="hibby" value="football" checked>踢足球</label>
            <label><input type="checkbox" name="hibby" value="playgame">打游戏</label>
            <label><input type="checkbox" name="hibby" value="eat" checked>吃饭饭</label>
            <label><input type="checkbox" name="hibby" value="sleep">熬夜打豆豆</label>
            
        </p>
        <p>
            <!-- 文件上传 默认是单文件上传 multiple可以多文件上传 -->
            <input type="file" multiple>
        </p>
        <p>
            <input type="submit" value="提交">
            <input type="reset" value="重置">
            <input type="button" value="普通按钮">
        </p>
        <p>
        <!-- 下拉菜单 selectede默认选中一个-->
            <select name="city">
                <option value="北京">北京</option>
                <option value="上海">上海</option>
                <option value="杭州" selected>杭州</option>
                <option value="深圳">深圳</option>
            </select>
        </p>
        <p>
            <!-- 文本域标签 -->
            请输入描述信息<br>
            <!-- cols相当于控制宽度 rows相当于控制高度 -->
            <textarea name=""  cols="30" rows="10" placeholder="请输入1000字反思"></textarea>
        </p>
    </form>

CSS笔记


基础选择器

1.标签选择器        

    <style>
        /* 选择器:将css跟html标签建立关联,并给该标签设置css样式 */

        /* 标签选择器  通过标签名来选中某一个标签
                特点:
                    标签选择器选中的是当前页面所有该标签,而不是只选中一个
        */
        div{
            color: lightblue;
        }
        h1{
            color: lightsalmon;
        }
    </style>

<body>
    <div>我是div标签</div>
    <p>我是p标签</p>
    <span>我是span标签</span>
    <h1>我是h1标签</h1>
    <div>我也是div标签</div>
    <ul style="list-style: none;">
        <li><div>我是ul里的div标签</div></li>
    </ul>
</body>

2.类选择器

    <style>
        /* 类选择器:.类名{}
                特点:
                    类选择器既可以选中一个,也可以选中多个
                    所有的标签都能设置class属性
                    一个标签可以同时拥有多个类名
        */
        .uld{
            color: lawngreen;
        }
        .-ban_1{
            color: lightsalmon;
        }
    </style>

<body>
    <div class="-ban_1">我是div标签</div>
    <div>我也是div标签</div>
    <ul>
        <li><div class="uld">我是ul里的div标签</div></li>
    </ul>
</body>

3.id选择器

    <style>
        /* id选择器 #id名 {} 
            特点:
                id的名字只能被定义一次
                一个标签只能拥有一个id
                一次只能选中一个标签
        */
        #one{
            color: lightcoral;
        }
        .one1{
            font-size: 60px;
        }
        input{
            width: 350px;
            height: 35px;
            border-radius: 20px;
            border: 1px solid lightcoral;
            outline: none;
        }
        input::placeholder{
            font-size: 14px;
            color: #c3c3c3;
        }
    </style>

<body>
    <div id="one" class="one1">我是div标签</div>
    <p>我是p标签</p>
    <div id="two">我也是div标签</div>
    <input type="text" placeholder="请搜索你喜欢的商品">
</body>

设置字体的相关样式

font家族

        .box{
            /* 改变字体大小 */
            /* 在谷歌浏览器中 支持最小字体是12px */
            font-size: 60px;

            /* 改变字体粗细 */
            /* 取值:
                    关键字:bold加粗 normal正常
                    数值: 100-900之间的整百数 400正常不加粗 700加粗
                    并不是所有浏览器都提供了9种文字的粗细程度    
            */
            font-weight: 700;

            /* 设置字体是否倾斜 */
            /* 取值:italic倾斜 normal不倾斜 */
            font-style: italic;

            /* 设置字体系列 */
            /* font-family支持同时设置多个字体系列
                先找第一个,如果第一个不支持就找第二个。。。如果都不支持,则使用默认字体
                要想支持多个字体系列 用逗号隔开
            */
            font-family: 楷体;

            /* 属性合写 */
            /* 取值 font:style weight size family 
                如果这个属性有默认值,那么就可以省略
                style和weight可以省略掉,size和family不可以省略
            */
        }
        p{
            font-size: 30px;
            font-weight: 300;
            font-style: italic;
        }
    </style>

<body>
    <div class="box">
        我是div标签
    </div>
    <p>我是p标签</p>
</body>

设置文字首行缩进

    <style>
        .box{
            /* 设置首行缩进 */
            /* 取值:
                    数字 + px
                    数字 + em  1em = 当前的font-size的大小   
            */
            text-indent: 2em;
        }
    </style>

<body>
    <div class="box">
        2022年7月27日 星期三 小蓝日刊  
        1、M1 Mac Pro 被搁置,苹果将直接发布 M2 Extreme 版 Mac Pro 电脑
        2、UEFI 主板 BIOS 木马发现新变种
    </div>
</body>

设置文字居中效果

    <style>
        .box{
            height: 60px;
            background-color: lightblue;
            /* 设置文字水平居中 text-align */
            text-align: center;
            /* 行高等于盒子的高度 可以让文字垂直居中 */
            line-height: 60px;
            
            /* text-align:center;一般情况下只能给独占一行的加
                给谁加就是让谁里面的内容居中
                如果需要让文本水平居中,text-align属性给文本所在标签父元素设置
                可以让 文本 span a input img 居中 需给以上元素的父元素设置text-align:center
            */
        }
    </style>

<body>
    <div class="box">
        <a href="#">首页</a>
    </div>
</body>

文本装饰线

    <style>
        a{
            /* 设置文本装饰线 */
            /* 取值:
                    none:没有装饰线
                    underline:下划线
                    line-through:删除线
                    overline:上划线
            */
            text-decoration: none;
            color: lightcoral;
        }
        span{
            text-decoration: underline;
            color: lightcoral;
        }
    </style>

<body>
    <div class="box">
        <a href="#">首页</a>
    </div>
    <span>啊啊啊啊啊</span>
</body>

选择器Plus版

1.后代选择器

        /* 后代选择器;选择器1 选择器2 {css代码} 用空格隔开 */
        .box a{
            color: red;
        }
        .box p a{
            text-decoration: none;
            font-size: 18px;
            color: green;
        }
        .box h1 p a{
            text-decoration: none;
            font-size: 20px;
            color: blue;
        }
    </style>

<body>
    <div class="box">
        <a href="#">我是a标签</a>
        <p>我是p标签</p>
        <p>
            <a href="#">我是p标签里的a标签</a>
        </p>
        <h1>
            <p>
                <a href="#">我是h1标签里的p标签里的a标签</a>
            </p>
        </h1>
    </div>
    <p>我也是p标签</p>
</body>

2.子代选择器

    <style>
        /* 子代: 指的就是亲儿子 选择器1>选择器2 {css} */
        .father > .son{
            color: lightcoral;
        }
        .list_box > .list > li{
            color: blue;
        }
    </style>

<body>
    <div class="father">
        <div class="son">
            <span>我是son里的span标签</span>
        </div>
    </div>
    <hr>
    <div class="list_box">
        <ul class="list">
            <li>
                1
                <div>
                    <ul class="list">
                        <li>2</li>
                    </ul>
                </div>
            </li>
        </ul>
    </div>
</body>

3.并集选择器

    <style>
        /* 并集选择器:并集->一起,一块,共同的意思 */
        /* 语法:选择器1,选择器2,选择器3......用逗号隔开 */
        h1,
        p,
        ul{
            margin: 0;
            padding: 0;
        }
        /* 实现box下的h1和p标签文字变色 */
        /* .box h1,p{
            color: lightcyan;
        }   错误写法 外面的p也会变色 */
        .box h1, .box p{
            color: lightcoral;
        }
    </style>

<body>
    <div class="box">
        <h1>我是h1标签</h1>
        <p>我是p标签</p>
        <ul>
            <li>
                我是li标签
            </li>
        </ul>
    </div>
   <p>我是外面的p标签</p>
</body>

4.交集选择器

    <style>
        /* 交集选择器:既是....又是.... 选择器与选择器之间没有任何的空格及特殊符号*/
        /* 选择既是div又是类名.box的标签 */
        div.box{
            color: lightcoral;
        }
        p.box{
            color: blue;
        }
    </style>

<body>
    <div class="box">我是div标签</div>
    <p class="box">我是p标签</p>
</body>

5.hover伪类选择器

        .box{
            height: 70px;
            background-color: lightblue;
            text-align: center;
            line-height: 70px;
        }
        .box:hover{
            background-color: lightcoral;
        }
        a{
            text-decoration: none;
            font-size: 18px;
            color: #000;
        }
        a:hover{
            color: skyblue;
            font-size: 20px;
        }
    </style>
</head>
<body>
    <div class="box">
        <a href="#">首页</a>
        <a href="#">秒杀</a>
        <a href="#">叮咚云</a>
        <a href="#">PLUS会员</a>
        <a href="#">京东拍卖</a>
    </div>

元素的显示模式

1.块级元素(block)

        特点:1.独占一行 2.宽度默认父元素的高度 3.可以设置宽高

        代表标签:div p h ul/li ol dl dt dd form

2.行内元素(inline)

        特点:1.一行可以显示多个 2.可以设置宽高,但不生效

        代表标签:a span img 文本格式化标签

3.行内块元素(inline-block)

        特点:1.一行可以显示多个 2.可以设置宽高

        代表标签:input textarea button select

4.元素间的相互转换

        display:display-block(转为块元素)  display-inline(转为行内元素)                          display-inlineblock(转为行内块元素)


CSS三大特性

1.层叠性

        同一个选择器下设置相同的css属性,下面的会覆盖掉上面的

2.继承性

        子元素会继承父元素的某一些css属性

        可以继承的CSS属性

                ①font家族(h标签不能继承font-size,要想修改,只能单独选出来手动修改)

                ②color(a标签的color不能继承,要想修改,只能单独选出来手动修改)

                ③text-indent

                ④text-align

                ⑤line-height

3.优先级

        !important > 行内样式 > id选择器 > 类选择器 > 标签选择器 > 通配符选择器 > 继承


盒子模型

1.content内容区域

        width height

2.border边框区域

        ①boder-color:边跨颜色

        ②border-width:边框粗细

        ③border-style:边框线的样式

                solid:实线

                dashed:虚线

                dotted:点状线

        ④合写:border:粗细 样式 颜色

3.padding内边距区域(设置盒子边框和内容之间的间距)

        padding-top:上内边距

        padding-bottom:下内边距

        padding-left:左内边距

        padding-right:右内边距

        合写:padding:一个值(上右下左)

                   padding:二个值(上下 左右)

                   padding:三个值(上 左右 下)

                   padding:四个值(上 右 下 左)

        注意事项:内边距也会撑大盒子(内边距会影响盒子的实际大小)

4.margin外边距区域(设置盒子与盒子之间的距离)

        margin-top:上内边距

        margin-bottom:下内边距

        margin-left:左内边距

        margin-right:右内边距

        合写:margin:一个值(上右下左)

                   margin:二个值(上下 左右)

                   margin:三个值(上 左右 下)

                   margin:四个值(上 右 下 左)

        注意事项:外边距是不能影响盒子的实际大小


选择器Pro Plus版        

结构伪类选择器

    <style>
        /* first-child和last-child寻找过程
            先找到第一个或最后一个,再去对比找到的标签跟写的是否一致
        */

        /* 渲染效率上 first和last比nth高 */

        /* 选择偶数行 2n或者even */
        ul li:nth-child(2n){
            background-color: lightblue;
        }

        /* 选择奇数行 2n+1或者odd */
        ul li:nth-child(2n+1){
            background-color: lightcoral;
        }


        .box span:nth-child(odd){
            color: red;
        }
    </style>

<body>
    <ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
        <li>6</li>
    </ul>
    <div class="box">
        <span>span1</span>
        <p>p1</p>
        <a href="#">a1</a> <br><br>
        <span>span2</span> <br><br>
        <div>div1</div>
    </div>
</body>

补充:div:nth-child(1)和div:nth-of-type(1)

        nth-child先到指定的第几个,再去对比找到的标签跟你写的标签是不是一致

        nth-of-type先找到指定的标签名进行排序,然后在排序的标签名中找第几个


伪元素( 一般用在双标签身上)

        ::before:指的是某个盒子的内容的最前面

        ::after:指的是某个盒子的内容的最后面

        伪元素的注意事项:             

                1.伪元素最终会添加在双标签的内容的前后

                2.伪元素的内容放在content属性中,用英文引号包裹

                3.伪元素默认是一个行内元素

                4.伪元素一定要包含content属性,如果没有,伪元素会显示不出来


浮动

    <style>
        /* 
            浮动的特点:
                1.浮动的元素会脱标,脱标会导致盒子不占位置,盒子不占位置就会让后面的盒子往上跑
                2.浮动元素的显示级别要比标准流高
                3.浮动元素与浮动元素之间也有先后顺序
                4.如果一个行内元素浮动了,那么这个行内元素可以设置宽高且生效
            注意事项:
                设置浮动属性的元素,再去设置text-align:center;和margin:0 auto;是无效的
                一浮全浮:一个盒子中的子盒子,其中一个盒子设置了浮动,那么其他的子盒子也要设置浮动         
        */
        .box{
            width: 800px;
            height: 600px;
            background-color: lightblue;
        }
        .son1,.son2{
            float: left;
            width: 300px;
            height: 300px;
        }
        .son1{
            background-color: lightcoral;
        }
        .son2{
            background-color: lightgreen;
        }
    </style>

<body>
    <div class="box">
        <div class="son1"></div>
        <div class="son2"></div>
    </div>
</body>

定位(position)

        1.静态定位:static

                ①静态定位是一种特殊定位就是没有定位(占着茅坑不上厕所)

                ②和标准流盒子一样

        2.相对定位:relative

                ①相对于元素自身的位置移动的定位

                ②相对定位,元素移动之前占位置,移动之后新的位置脱标,不占位置

        3.绝对定位:absolute

                ①带有任意一种定位属性的元素,如果祖先元素没有定位属性,则参考对象是浏览器

                ②绝对定位不管是移动后的新位置,还是移动后的旧位置都是脱标的,不占位置

        4.固定定位:fixed

                ①参考对象是整个浏览器窗口

                ②脱标不占位置

                ③让一个元素固定在某个地方保持不动

        5.定位元素之间的层级问题

                ①定位的元素,标签的属性,谁在下面,页面的显示的效果尚谁就在上面

                ②要想改变定位元素之间默认的显示效果,需要通过z-index属性来改变定位元素之间的显示层级

                ③z-index比较的是后面谁的数字大,谁的层级就高,谁的层级高谁就在最上面显示

                ④显示层级 标准流 < 浮动 < 定位


元素自身的显示与隐藏

    <style>
        .one{
            width: 200px;
            height: 200px;
            background-color: lightblue;
        }
        .two{

            /* visibility: hidden;隐藏之后占位置  */
            /* display: none; 隐藏之后不占位置  */

            visibility: hidden;
            display: none;
            width: 200px;
            height: 200px;
            background-color: lightcoral;
        }
        .three{
            width: 200px;
            height: 200px;
            background-color: lightseagreen
        }
    </style>

<body>
    <div class="one"></div>
    <div class="two"></div>
    <div class="three"></div>
</body>

使用CSS3画小三角

    <style>
        .box{
            width: 0px;
            height: 0px;
        
            /* 设置四条边框,颜色为透明色 */
            border: 10px solid transparent;
            /* 单独指定一条边 设置颜色层叠掉透明色 */
            border-top: 10px solid black;
        }
    </style>

<body>
    <div class="box"></div>
</body>

属性选择器

    <style>
        /* 属性选择器一般配合js使用 */
        /* E[attr] */
        /* E[attr='val'] 
            选中具有attr属性并且属性值等于val的E标签
        */
        input[value]{
            background-color: lightblue;
        }
        input[placeholder]{
            background-color: lightgray;
        }
        input::placeholder{
            background-color: red;
        }
    </style>

<body>
    <input type="text" value="打你的母牛">
    <input type="text" placeholder="输入你的母牛">
</body>


移动Web笔记

2D转换

位移--transform:translate

transform:translate(x,y);

单位是px或者%(参考本身的宽高)

实现在x轴和y轴上位移;如果只写一个值,该值是x轴方向。


补充:和定位配合使用可以实现水平垂直居中

            position: absolute;
            left: 50%;
            top: 50%;
            transform: translate(-50%,-50%);

旋转--transform:rotate

transform:rotate(xdeg);

单位是deg(角度);


设置旋转中心点:transform-origin:-- --;

属性值可以是方位名称或者宽高;

        div{
            width: 200px;
            height: 100px;
            background-color: lightcoral;
            /* 设置旋转中心点 */
            transform-origin: left bottom;
            transition: all 1s;
        }
        div:hover{
            transform: rotate(360deg);
        }

缩放--transform:scale

transform:scale(x,y);

单位直接写数字,没有单位,大于1放大,小于1缩小。写一个值,等比例放大缩小。

transform复合写法

1.多个属性之间用空格隔开
2.绝大多数情况下,要先写位移,再写旋转等其他属性值(为什么?因为先旋转会改变坐标的位置)

动画--animation

动画的定义:

1. @keyframes 动画名称{0%{} 100%{}}(百分比分割的是时间) 或者 @keyframes 动画名称{from{} to{}}

动画的使用:

1.动画名称(必写):animation-name

2.执行时长(必写):animation-duration

3.运动曲线:animation-timing-function

        ①linear(匀速)  ease  ease-out .....

        ②steps(2) 步长 里面单位跟数字

        注意:如果使用了步长steps 就不要再次运用运动曲线

4.动画延时:animation-delay(设置几秒后开始动画)

5.执行次数:animation-iteration-coun(infinite 无限次)

6.动画逆播:animation-direction:alternate

7.动画结束状态:animation-fill-mode:backwards(结束时立即返回) forwards(停在结束位置)

8.动画的播放状态:animation-play-state:默认时running   paused暂停

9.动画连写:animation:name(必写) duration(必写).......

注意:动画的播放状态不要写在动画连写里,一般配hover使用

div:hover{
            /* 是否暂停 此属性搭配hover使用 默认是running paused:暂停  不能写在动画复写里 */
            animation-play-state: paused;
        }

3D转换

透视距离

perspective:xxxpx;(一般取值500px-800px) 眼睛到屏幕的距离

        定义:为被观察的元素的父级别元素设置

transform:translateZ

        物体到屏幕的距离,在相等的透视距离里面,z轴越大,看到成像越大,反之亦然。

旋转

transform:rotate

        rotateX:相当于上下旋转(正值往后倒,负值往前躺) ------个人理解

        rotateY:相当于左右旋转(正值往右来,负值往左去) ------个人理解

        rotateZ:相当于自我旋转(正值顺时针转,负值逆时针转) ------个人理解

3D呈现

transform-style:preserve-3d;

        写给被观察元素的父元素上,一般加给亲爸爸。

注意:没有透视距离和3d呈现完不成3D效果!!!

Flex弹性盒子布局

设置父元素为弹性盒子:display:flex;

原理:通过为父元素设置display:flex;控制子元素(亲儿子)的排列方式。

父元素属性

1.主轴方向:flex-diection

        row 左->右(x轴) row-reverse(右 -> 左) ------默认

        column 上->下(y轴) column 下->上

2.是否换行:flex-wrap

        nowrap 不换行显示(默认)

        wrap 换行显示

        wrap-reverse 换行并翻转

3.子元素在主轴显示方式 justify-content

        flex-start 头部开始排列

        flex-end 尾部对齐

        center 居中对齐

        space-between 两端对齐 中间平均分配剩余空间

        space-around 平均分配剩余空间给伸缩项的两端

        space-evenly 平均分配剩余空间

4.子元素在侧轴的显示方式

        单行 align-items

                stretch 拉伸 (默认) -----要么不给宽,要么不给高。

                flex-start 开始方向对齐

                flex-end 结束方向对齐

                center 居中对齐

        多行 align-content

                stretch 拉伸

                flex-start 开始方向对齐

                flex-end 结束方向对齐

                center 居中对齐

                space-between 两端对齐 中间平均分配剩余空间

                space-around 平均分配剩余空间给伸缩项的两端

子元素属性

1.flex:number

        计算公式 - 当前元素的宽度 = 当前伸缩项的flex数值 / 所有兄弟的伸缩项的flex数值相加的和

        值可以是数字(不跟单位) 也可以是百分比 %

      span{
            background-color: lightsalmon;
            flex: 25%;
        }
        p span:nth-child(1){
            background-color: lightskyblue;
            flex: 50%;
        }


      <p>
          <span>1</span>
          <span>2</span>
          <span>3</span>
      </p>

2.控制单个子元素在侧轴的显示方式align-self

        stretch 拉伸 (默认值)

        flex-start 开始方向对齐

        flex-end 结束方向对齐

        center 居中对齐

3.排序 order (了解)

        默认为0;数值越小,排列越靠前。

less+rem+媒体查询布局

rem单位

1.em单位

        em是相对于父元素字体大小来设置,em是一个相对单位:如果自身有font-size,则以自身的font-size为基础计算,如果没有,则以父元素字体大小为准,如果父级没有会一直往上找,直到找到html元素的字体大小

2.rem单位

        rem是绝对于html元素的字体大小来设置,rem的优点是可以通过修改html里面的文字大小来改变页面中元素的大小可以整体控制。rem始终参考的是html标签的字体大小,跟父亲的字体大小没有关系。

媒体查询

1.媒体查询的作用

        媒体查询是CSS3新语法,使用@media查询,可以针对不同的媒体类型定义不同的样式,@media可以针对不同的屏幕尺寸设置不同的样式。

2.媒体查询语法规范

        用@media开头

        mediatype 媒体类型

        关键字 and not only

        media feature 媒体特性必须用小括号包含

        

@media mediatype and|not|only (media feature) {
    CSS-Code;
}

mediatype 媒体类型

        将不同的终端设备划分成不同的类型

        all 用于所有设备

        print 用于打印机或打印预览

        screen 用于电脑屏膜,平板电脑,智能手机等

关键字

        将多个媒体特性链接到一起作为媒体查询的条件

        and 可以将多个媒体类型连接到一起

        not 排除某个媒体类型

        only 指定某个特定的媒体类型

media feature 媒体特性

        每种媒体类型都具体各自不同的特性,根据不同媒体类型的媒体特性设置不同的风格

        width 定义输出设备中页面可见区域的宽度
        min-width 定义输出设备中页面最小可见区域宽度
        max-width 定义输出设备中页面最大可见区域宽度

        注意他们要加小括号包含

媒体查询书写规范

        为了防止混乱,媒体查询我们要按照从小到大或者从大到小的顺序来写,但是我们最喜欢的还是从小到大来写,这样代码更简洁

        例子:在最大的宽度是800px 设置想要的样式

​
  @media screen and (max-width: 800px) {
            body {
                background-color: pink;
            }
        }
        
        @media screen and (max-width: 500px) {
            body {
                background-color: purple;
            }
          }

​

Less基础

1.less变量

        @变量名:值


        必须以@为前缀

        不能包含特殊字符

        不能以数字开头

        大小写敏感

body{
    color:@color;
}
a:hover{
    color:@color;
}

2.less嵌套

nav{
    a{
        text-decoration: none;
        color: @deepColor;
        &:hover{
            color: red;
        }
        &:active{
            color: blue;
        }
    }
}

       如果遇见 (交集|伪类|伪元素选择器) 内层选择器的前面没有 & 符号,则它被解析为父选择器的后代;如果有 & 符号,它就被解析为父元素自身或父元素的伪类。 

3.less运算

        

@witdh: 10px + 5;
div {
    border: @witdh solid red;
}

        乘号(*)和除号(/)的写法   运算符中间左右有个空格隔开 1px + 5对于两个不同的单位的值之间的运算,运算结果的值取第一个值的单位 如果两个值之间只有一个值有单位,则运算结果就取该单位

rem适配方案

1.为什么要适配?怎么去适配?怎么在实际开发中使用?

        让一些不能等比自适应的元素,达到当设备尺寸发生改变的时候,等比例适配当前设备。使用媒体查询根据不同设备按比例设置html的字体大小,然后页面元素使用rem做尺寸单位,当html字体大小变化元素尺寸也会发生变化,从而达到等比缩放的适配。

2.rem 实际开发适配方案

        按照设计稿与设备宽度的比例,动态计算并设置 html 根标签的 font-size 大小;(媒体查询)CSS 中,设计稿元素的宽、高、相对位置等取值,按照同等比例换算为 rem 为单位的值;

3.rem 适配方案技术使用

方案1:less+媒体查询+rem

        1.设计稿常见尺寸宽度

                一般情况下,我们以一套或两套效果图适应大部分的屏幕,放弃极端屏或对其优雅降级,牺牲一些效果,现在基本以750为准。

        2.动态设置html标签font-size大小

                假设设计稿是750px,假设我们把整个屏幕划分为15等份(划分标准不一可以是20份也可以是10等份)每一份作为html字体大小,这里就是50px,那么在320px设备的时候,字体大小为320/15 就是  21.33px,用我们页面元素的大小 除以不同的 html 字体大小会发现他们比例还是相同的,比如我们以 750为标准设计稿,一个100*100像素的页面元素 在  750屏幕下,  就是 100 / 50  转换为rem  是  2rem * 2 rem  比例是 1比1,320屏幕下,html 字体大小为 21.33   则 2rem =  42.66px  此时宽和高都是  42.66  但是 宽和高的比例还是 1比1 但是已经能实现不同屏幕下  页面元素盒子等比例缩放的效果

        3.元素大小取值方法

                页面元素的rem值 = 页面元素值(px) / (平魔宽度 / 划分的份数)

                页面元素的rem值 = 页面元素值(px) / html的font-size的字体大小

方案2:flexible.js+rem

        手机淘宝团队出的简洁高效 移动端适配库,我们再也不需要在写不同屏幕的媒体查询,因为里面js做了处理,它的原理是把当前设备划分为10等份,但是不同设备下,比例还是一致的。我们要做的,就是确定好我们当前设备的html 文字大小就可以了。比如当前设计稿是 750px, 那么我们只需要把 html 文字大小设置为 75px(750px / 10) 就可以里面页面元素rem值: 页面元素的px 值 /  75  ,剩余的,让flexible.js来去算

  • 17
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值