前端页面布局方式与响应式布局


在这里插入图片描述

前端页面布局方式

小米工具栏响尾式布局下载地址
内容区域
内容区域一般有三种形式:

1 列:一般用于移动端
2 列:一般用于平板设备
3 列:一般用于 PC 桌面设备
在这里插入图片描述

PC端布局

两边宽固定,中间自适应,中间区域在HTML先行书写,便于先行渲染。
圣杯布局和双飞翼布局是前端工程师需要日常掌握的重要布局方式。两者的功能相同,都是为了实现一个两侧宽度固定,中间宽度自适应的三栏布局。

圣杯布局

  • 中心三栏布局,center,left,right全部浮动,父盒子设置清除浮动,center宽度100%,left,right固定宽200px,
  • left盒子利用左边margin-left: -100%;到center上的左边,right盒子利用 margin-left: -200px;到center盒子右边,
  • 因为left和right会遮盖center,利用父盒子padding:0 200px,留出左右两边的200px,
  • 然后利用left与right设置相对定位,左盒子left-200px,右边盒子rifht-200px位移到留白区域。
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        
        body {
            font-size: 50px;
            min-width: 620px;
            max-width: 1000px;
        }
        
        header,
        footer {
            width: 100%;
            height: 100px;
            line-height: 100px;
            text-align: center;
            background-color: tan;
        }
        
        .layer {
            padding: 0 200px;
        }
        
        .layer::after {
            content: "";
            display: block;
            clear: both;
        }
        
        .center {
            width: 100%;
            height: 300px;
            line-height: 300px;
            float: left;
            text-align: center;
            background-color: blue;
        }
        
        .left,
        .right {
            height: 300px;
            width: 200px;
            float: left;
            line-height: 300px;
            position: relative;
            background-color: thistle;
        }
        
        .left {
            margin-left: -100%;
            left: -200px;
        }
        
        .right {
            margin-left: -200px;
            right: -200px;
            background-color: tomato;
        }
     
    </style>
</head>

<body>
    <header>顶部</header>
    <div class="layer">
        <div class="center">中心</div>
        <div class="left">左边</div>
        <div class="right">右边</div>
    </div>
    <footer>底部</footer>
</body>

双飞翼布局

中心盒子写前面,左边盒子,右边盒子和中心盒子全部浮动,中心盒子内嵌套一个内容盒子,内容盒子用左右margin值,挤开留出空白间隙,然后左边盒子margin-lrft值-100%,右边盒子用margin-left-盒子宽度。

 <style>
        * {
            margin: 0;
            padding: 0;
        }
        
        body {
            font-size: 50px;
            min-width: 620px;
            max-width: 1000px;
        }
        
        header,
        footer {
            width: 100%;
            height: 100px;
            line-height: 100px;
            text-align: center;
            background-color: tan;
        }
        
        .content {
            margin: 0 200px;
        }
        
        .center {
            width: 100%;
            height: 300px;
            float: left;
            line-height: 300px;
            text-align: center;
            background-color: blue;
        }
        
        .left,
        .right {
            height: 300px;
            width: 200px;
            float: left;
            line-height: 300px;
            background-color: thistle;
        }
        
        .left {
            margin-left: -100%;
        }
        
        .right {
            margin-left: -200px;
        }
        
        footer {
            clear: both;
        }
    </style>
<body>
    <header>顶部</header>
    <div class="center">
        <div class="content">中心</div>
    </div>
    <div class="left">左边</div>
    <div class="right">右边</div>
    <footer>底部</footer>
</body>

弹性盒子布局

弹性盒子中心区域设置flex-grow为1,设置order属性,元素顺序。

 <style>
        * {
            margin: 0;
            padding: 0;
        }
        
        body {
            font-size: 50px;
            min-width: 620px;
            max-width: 1000px;
        }
        
        .layer {
            width: 100%;
            display: flex;
        }
        
        .center {
            flex-grow: 1;
        }
        
        .left {
            order: -1;
        }
        
        header,
        footer {
            width: 100%;
            height: 100px;
            line-height: 100px;
            text-align: center;
            background-color: tan;
        }
        
        .center {
            width: 100%;
            height: 300px;
            line-height: 300px;
            text-align: center;
            background-color: blue;
        }
        
        .left,
        .right {
            height: 300px;
            width: 200px;
            line-height: 300px;
            background-color: thistle;
        }
        
        .right {
            background-color: tomato;
        }
    </style>
</head>

<body>
    <header>顶部</header>
    <div class="layer">
        <div class="center">中心</div>
        <div class="left">左边</div>
        <div class="right">右边</div>
    </div>
    <footer>底部</footer>
</body>

响应式布局

首先必须了解多媒体查询。

多媒体查询

@media 规则在 CSS2 中有介绍,针对不同媒体类型可以定制不同的样式规则。

你可以针对不同的媒体类型(包括显示器、便携设备、电视机,等等)设置不同的样式规则。

但是这些多媒体类型在很多设备上支持还不够友好。

媒体查询可用于检测很多事情,例如:

  • viewport(视窗) 的宽度与高度
  • 设备的宽度与高度
  • 朝向 (智能手机横屏,竖屏) 。
  • 分辨率
    目前很多针对苹果手机,Android 手机,平板等设备都会使用到多媒体查询。
语法
@media  媒体类型 and (媒体功能) {
    CSS 代码...;
}
媒体类型
描述
all用于所有设备
print用于打印机和打印预览
projection已废弃。 用于投影设备
screen用于电脑屏幕,平板电脑,智能手机等。
speech应用于屏幕阅读器等发声设备
媒体功能
描述
aspect-ratio定义输出设备中的页面可见区域宽度与高度的比率
color定义输出设备每一组彩色原件的个数。如果不是彩色设备,则值等于0
color-index定义在输出设备的彩色查询表中的条目数。如果没有使用彩色查询表,则值等于0
device-aspect-ratio定义输出设备的屏幕可见宽度与高度的比率。
device-height定义输出设备的屏幕可见高度。
device-width定义输出设备的屏幕可见宽度。
grid用来查询输出设备是否使用栅格或点阵。
height定义输出设备中的页面可见区域高度。
max-aspect-ratio定义输出设备的屏幕可见宽度与高度的最大比率。
max-color定义输出设备每一组彩色原件的最大个数。
max-color-index定义在输出设备的彩色查询表中的最大条目数。
max-device-aspect-ratio定义输出设备的屏幕可见宽度与高度的最大比率。
max-device-height定义输出设备的屏幕可见的最大高度。
max-device-width定义输出设备的屏幕最大可见宽度。
max-height定义输出设备中的页面最大可见区域高度。
max-monochrome定义在一个单色框架缓冲区中每像素包含的最大单色原件个数。
max-resolution定义设备的最大分辨率。
max-width定义输出设备中的页面最大可见区域宽度。
min-aspect-ratio定义输出设备中的页面可见区域宽度与高度的最小比率。
min-color定义输出设备每一组彩色原件的最小个数。
min-color-index定义在输出设备的彩色查询表中的最小条目数。
min-device-aspect-ratio定义输出设备的屏幕可见宽度与高度的最小比率。
min-device-width定义输出设备的屏幕最小可见宽度。
min-device-height定义输出设备的屏幕的最小可见高度。
min-height定义输出设备中的页面最小可见区域高度。
min-monochrome定义在一个单色框架缓冲区中每像素包含的最小单色原件个数
min-resolution定义设备的最小分辨率。
min-width定义输出设备中的页面最小可见区域宽度。
monochrome定义在一个单色框架缓冲区中每像素包含的单色原件个数。如果不是单色设备,则值等于0
orientation定义输出设备中的页面可见区域高度是否大于或等于宽度。
resolution定义设备的分辨率。如:96dpi, 300dpi, 118dpcm
scan定义电视类设备的扫描工序。
width定义输出设备中的页面可见区域宽度。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值