响应式布局

一. 弹性布局

实现弹性布局的方法

浮动+百分比

//css样式
.box{
    width:100%;
    border: 1px solid #000000;
    padding: 10px;
}
aside{
    width:30%;
    float: left;
    background: red;
    padding: 10px;
}
article{
    width: 65%;
    margin-left: 10px;
    float: left;
    background: yellow;
}

Flex布局

在屏幕和浏览器窗口大小发生改变时,可以灵活的调整布局。
控制元素在页面的布局方向。
按照不同于DOM所指定排序方式对屏幕上的元素重新排序。

//css样式
display: flex;

常用属性:

属性说明
flex伸缩性
flex-direction伸缩流方向
flex-wrap伸缩换行
justify-content主轴对齐
align-items侧轴对齐
1) 伸缩性flex

flex属性的具体数值并不代表具体的宽度值, 而是一个比例值.

.box{
    display: flex;
    border: 1px solid #000000;
    padding: 10px;
}
aside{
	flex: 1;
    background: red;
    padding: 10px;
}
article{
	flex: 1;
    margin-left: 10px;
    background: yellow;
}
2) 伸缩流方向 flex-direction
flex-direction : row | row-reverse | column | column-reverse ;

row : 默认值, 元素从左到右排列
row-reverse: 元素从右到左排列
column :元素从上到下排列
column-reverse: 元素从下到上排列

3) 伸缩换行 flex-wrap
flex-wrap: nowrap | wrap | wrap-reverse ;

nowrap: 默认值, 伸缩容器单行显示, 伸缩项目不会换行
wrap: 伸缩容器多行显示, 伸缩项目会换行
wrap-reverse: 伸缩容器多行显示, 伸缩项目会换行, 且颠倒行顺序

4) 主轴对齐 justify-content

设置或检索弹性盒子元素在主轴(横轴)方向上的对齐方式 (适用于父类容器上)。

justify-content: flex-start | flex-end | center | space-between | space-around ; 

flex-start: 默认值。项目位于容器的开头。让子元素从父容器的开头开始排序
在这里插入图片描述
flex-end: 项目位于容器的结尾。让子元素从父容器的后面开始排序
在这里插入图片描述
center: 项目位于容器的中心。让子元素在父容器中间显示
在这里插入图片描述
space-between: 项目位于各行之间留有空白的容器内。左右的盒子贴近父盒子,中间的平均分布空白间距
在这里插入图片描述
space-around: 项目位于各行之前、之间、之后都留有空白的容器内。相当于给每个盒子添加了左右margin外边距
在这里插入图片描述

5) 侧轴对齐 align-items

设置或检索弹性盒子元素在侧轴(纵轴)方向上的对齐方式

align-items: flex-start| flex-end| center| stretch| baseline ;

stretch :如果指定侧轴大小的属性值为’auto’,则其值会使项目的边距盒的尺寸尽可能接近所在行的尺寸,但同时会遵照’min/max-width/height’属性的限制。
在这里插入图片描述

center :弹性盒子元素在该行的侧轴(纵轴)上居中放置。
在这里插入图片描述

flex-start :弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴(纵轴)起始边界。
在这里插入图片描述

flex-end :弹性盒子元素的侧轴(纵轴)结束位置的边界紧靠住该行的侧轴(纵轴)结束边界。
在这里插入图片描述

baseline :如弹性盒子元素的行内轴与侧轴为同一条,则该值与’flex-start’等效。其它情况下,该值将参与基线对齐。
在这里插入图片描述

二. 响应式布局的实现方式及应用

媒体查询

媒体类型

设备类型
All所有设备
Braille盲人用点字法触觉回馈设备
Embossed盲人打印机
Handheld便携设备
Print打印用纸或打印预览视图
Projection各种投影设备
Screen电脑显示器
Speech语音或音频合成器
Tv电视机类型设备
Tty使用固定密度字母栅格的媒介,比如电传打字机和终端

常用的有 all, screen, print 三种

媒体类型的引入方式

@media方式

@media 媒体类型 {
	选择器{/*样式代码写在这里...*/}
}

link方式

<link href = "style1.css" rel="stylesheet"/>

媒体特性

媒体特性是CSS3对媒体类型的增强版
可以将媒体特性看成 “媒体类型(判断条件) + CSS (符合条件的样式规则) "

@media 媒体类型 and (媒体特征) {CSS样式}
属性Min/Max描述
device-widthLengthYes设置屏幕的输出宽度
device-heightLengthYes设置屏幕的输出高度
widthLengthYes渲染界面的宽度
heightLengthYes渲染界面的高度
OrientationPortrait/andscapeNo横屏或竖屏
Resolution分辨率(dpildpcm)Yes分辨率
Color整数Yes每种色彩的字节数
color-index整数Yes色彩表中的色彩数

关键词

and :同时满足这两者时生效,到达限定范围

@media screen and ( max-width: 1200px) {样式代码..}

only :指定某种特定的媒体类型,可以用来排除不支持媒体查询的浏览器

<link href = "style1.css" media =”only screen and (max- width: 500px)"/>

not :排除某种指定的媒体类型,即排除符合表达式的设备

@media not print and ( max- width: 1200px) {样式代码..}

媒体查询的使用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        /*大于1024px*/
        @media all and (min-width: 1024px){
            .box{
                width: 1024px;
                padding: 30px;
                margin: 10px auto 0;
                background: red;
            }
            h2{
                font-size: 28px;
            }
            h2 strong{
                font-size: 14px;
                color: silver;
                float: right;
                margin-right: 30px;
            }
            .list{
                margin-top: 30px;
                display: flex;
                justify-content: space-around;
            }
            .list li img{
                width: 90%;
            }
            .list li p{
                font-size: 12px;
            }
        }
        /*640px到1023px*/
        @media all and (min-width: 640px) and (max-width: 1023px){
            .box{
                width: 640px;
                padding: 24px;
                margin: 10px auto 0;
                background: yellow;
                display: flex;
                flex-direction: column;
            }
            h2{
                font-size: 20px;
            }
            h2 strong{
                font-size: 16px;
                color: silver;
                float: right;
                margin-right: 24px;
            }
            .list{
                margin-top: 30px;
                display: flex;
                flex-wrap: wrap;
            }
            .list li img{
                width: 90%;
            }
            .list li p{
                font-size: 14px;
            }
        }
        /*320px到639px*/
        @media all and (min-width: 320px) and (max-width: 639px){
            .box{
                width: 320px;
                padding: 20px;
                margin: 10px auto 0;
                background: blue;
                display: flex;
                flex-direction: column;
            }
            h2{
                font-size: 22px;
            }
            h2 strong{
                font-size: 18px;
                color: silver;
                float: right;
                margin-right: 20px;
            }
            .list{
                margin-top: 30px;
                display: flex;
                flex-wrap: wrap;
                justify-content: center;
            }
            .list li img{
                width: 100%;
            }
            .list li p{
                font-size: 16px;
            }
        }
    </style>
</head>
<body>
<div class="box">
    <h2>热门活动<strong>更改</strong></h2>
    <ul class="list">
        <li>
            <img src="/pic/1595039824696_hxy.jpg" width="250px">
            <p>推荐活动 | 原创音乐现金榜T榜</p>
        </li>
        <li>
            <img src="/pic/1595039824696_hxy.jpg" width="250px">
            <p>推荐节目 | TAImusic爆笑来袭</p>
        </li>

    </ul>
</div>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值