HTML PC端常见布局

网页布局技巧
本文介绍了多种网页布局技术,包括单列布局、多列布局和九宫格布局等,并详细阐述了如何实现水平居中、垂直居中及混合居中等效果。

PC端常见的布局技术:
1. margin:0 auto ; 自动居中
2. text-align /vertical-align 和line-height
3. float:left/right +overflow:hidden 浮动
4. display:table/table-cell /inline-block 通过转换元素的属性来实现布局
5. 固定定位\相对定位\绝对定位 及配合z-index 来实现布局
6. CSS3新特性:flex 弹性布局
7. 响应式布局:viewport +” width=width-device ” +后边的媒体查询技术
8. 框架:bootstrap 的栅栏布局

以下文章摘自:https://segmentfault.com/a/1190000003931851

一、 单列布局

1.1 水平居中

水平居中的页面布局中最为常见的一种布局形式,多出现于标题,以及内容区域的组织形式,下面介绍实现水平居中的方法(注:下面各个实例中实现的是child元素的对齐操作,child元素的父容器是parent元素)
① 使用inline-block 和text-align实现

 .parent{text-align:center;}
 .child{display:inline-block;}

② 使用margin:0 auto来实现

 .child {width:200px;margin:0 auto;} 要指定宽度

③使用table实现

.child{display:table;margin:0 auto;}  IE6,7 需要调整结构

④使用绝对定位实现

.parent {position:relative;}
.child {position:absolute;left:50%;transform:translate(-50%);} IE9以上才能用

⑤用flex布局实现

.parent{display:flex;justify-content:center;}
或者
.parent{display:flex;}
.child{margin:0 auto;}

1.2 垂直居中

① vertical-align 通常用于table 的单元格 或者inline inline-block元素。

 /*第一种方法*/
 .parent{display:table-cell;vertical-align:middle;height:20px;}
/*第二种方法*/
.parent{display:inline-block;vertical-align:middle;line-height:20px;}

② 用绝对定位实现

.parent{position:relative;}
.child{position:absolute;top:50%;transform:translate(0,-50%);}

③ 用flex 实现

.parent{display:flex;align-items:center;}

1.3 水平垂直全部居中

①用vertical-align text-align inline-block实现

.parent{display:table-cell;vertical-align:middle;text-align:center;}
.child{display:inline-block;}

② 用绝对定位实现

.parent{position:relative;}
.child{positon:absolute;top:50%;left:50%;transform:translate(-50%,-50%);}

③ 用flex实现

.parent{display:flex;justify-content:center;align-items:center;}

二、多列布局

2.1 左列定宽,右列自适应

该布局方式非常常见,适用于定宽的一侧常为导航,自适应的一侧为内容的布局。(下面例子,左右列默认设置有 高度)

① 利用float+margin 实现

.left{float:left;width:100px;}
.right:{margin-left:100px;}

② 利用float+margin(fix)实现
这方法需先更改标签结构

<div class="parent">
    <div class="left"></div>
    <div class="right-fix">
        <div class="right"></div>
    </div>
</div>

样式:

.left{width:100px;float:left;}
.right-fix{width:100%;margin-left:100px; float:right;}
.right:{margin-left:100px;}

③ 使用float+overflow实现

.left{width:100px;float:left;}
.right{overfloat:hidden;}

④ 使用table实现, 通过表格内单元格自动排列的特性来实现

.parent{display: table;table-layout: fixed;width: 100%;}
.left{width:100px;}
.right,.left{display:table-cell;}

⑤ 用flex实现

.parent{display:flex;}
.left{width:100px;}
.right:{flex:1;}

2.2 右列定宽,左列自适应

 方法略

2.3 三列,其中两列定宽,一列自适应

2.3.1 左中两列定宽,右侧自适应

① 利用float+margin实现

.left,.center{float:left;width:100px;}
.right{margin-left:200px;}

② 用float+overflow实现

.left,.center{float:left;width:100px;}
.right{overflow:hidden;}  /*overflow 可以去除浮动的影响*/

③ 利用table实现

.parent{display:table;table-layout:fixed;width:100%;}
.left,.center.right{display:table-cell;}
.left,.right{width:100px;}

④ 用flex 实现

.parent{display:flex;}
.left,.center{width:100px;}
.right{flex:1}

2.3.2 两侧定宽,中栏自适应

① 用float+margin实现

 .left{width:100px;float:left;}
 .center{float:left;width:100%;margin-right:-200px;}
.right{width:100px;float:right;}

② 用table 实现

.parent{width:100%;display:table;table-layout:fixed;}
.left,.center,.right{display:table-cell;}
.left,.right{width:100px;}

③ 用flex实现

.parent{display:flex;}
.left,right{width:100px;}
.center{flex:1;}

2.4 一列不定宽,一列自适应

① 用float+overflow实现

.left{float:left;}
.right{overflow:hidden;}

② 用table实现

.parent{display:table;table-layout:fixed;width:100%;}
.left{width:0.1%;}
.left,.right{display:table-cell;}

③ 用flex 实现

.parent{display:flex;}
.right{flex:1;}

2.5 多列等分布局

假定为4列等分布局,结构如下: 前提条件:.parent 的宽为100%,高假设为100px;第一个div 和最后一个div需要靠边,两个div之间的距离为20px;

 <div class="parent"  width="100%" height="100">
    <div class="column">1</div>
    <div class="column">1</div>
    <div class="column">1</div>
    <div class="column">1</div>
</div>

① 用float实现

.parent{margin-left:-20px;} /*处理第一个div靠边的问题*/
.column{float:left;width:25%;padding-left:20px;box-sizing:border-box;}

② 用table实现

.parent-fix{margin-left:-20px;} /*处理第一个div靠边的问题*/
.parent{display:table;table-layout:fixed;width:100%;}
.column{display:table-cell;padding-left:20px;}

③ 用flex实现

.parent{display:flex;}
.column{flex:1;}
.column+.column{margin-left:20px;}

三 九宫格布局

例子:
① 用float实现

<div class="parent">
    <div class="child"></div><div class="child"></div><div class="child"></div>
    <div class="child"></div><div class="child"></div><div class="child"></div>
    <div class="child"></div><div class="child"></div><div class="child"></div>
</div>
.child{ float:left;width:33.3%;height:33.3%;box-sizing: border-box;}

② 用table实现

<div class="parent">
        <div class="row"><div class="item"></div><div class="item"></div><div class="item"></div></div>
        <div class="row"><div class="item"></div><div class="item"></div><div class="item"></div></div>
        <div class="row"><div class="item"></div><div class="item"></div><div class="item"></div></div>
    </div>
.parent{display:table;table-layout:fixed;width:100%;}
.row{display:table-row;}
.item{display:table-cell;width:33.3%;height:33.3%;}

③ 用flex 实现

.parent{display:flex;flex-drection:column; width:500px;height:500px;}/*需要知道参考div的宽高*/
.row{height:33.3%;display:flex;}
.item{width:33.3%;background:red;}
### 3. PC网页布局设计与实现方法 在PC进行网页布局设计与实现时,通常需要兼顾响应式布局、动态适配和兼容性,以确保页面在不同分辨率下都能提供良好的用户体验。以下是几种常用的实现方法: #### 3.1 固定宽度布局 固定宽度布局是一种传统的网页布局方式,适用于不需要动态调整的场景。常见的固定宽度范围是1004px到1280px之间,结合页面布局的容器设置最大宽度(`max-width`)和自动居中(`margin: 0 auto`)来实现居中显示。例如: ```css .container { width: 100%; max-width: 1600px; margin: 0 auto; } ``` 这种方法简单直观,但在不同分辨率下可能无法充分利用屏幕空间[^2]。 #### 3.2 响应式布局 响应式布局是现代网页设计中常用的方法,通过媒体查询(Media Queries)和灵活的网格布局,使页面能够根据屏幕尺寸自动调整布局。例如,使用CSS媒体查询定义不同屏幕宽度下的样式: ```css @media (max-width: 1280px) { .container { width: 100%; padding: 10px; } } ``` 响应式布局能够确保页面在不同设备上都能良好显示,同时减少维护成本[^2]。 #### 3.3 使用REM布局实现自适应 REM(Root EM)是一种基于HTML根元素字体大小的单位,适用于实现PC网页的自适应布局。通过动态设置HTML的`font-size`,可以实现页面元素的尺寸随屏幕宽度变化而调整。例如: ```javascript function setRem() { let designSize = 1920; // 设计图尺寸 let html = document.documentElement; let wW = html.clientWidth; // 窗口宽度 let rem = wW * 100 / designSize; document.documentElement.style.fontSize = rem + 'px'; } window.addEventListener('load', setRem); window.addEventListener('resize', setRem); ``` 通过这种方式,页面中的元素可以基于REM单位进行适配,从而实现动态调整[^4]。 #### 3.4 使用Vue框架实现自适应 如果使用Vue框架开发PC网页,可以通过计算属性动态设置元素的宽度。例如: ```html <div :style="{ width: getScaleByUI(300) + 'px' }"></div> ``` 在Vue组件中定义`getScaleByUI`方法,根据屏幕宽度动态计算元素的尺寸。需要注意的是,不建议直接在`style`中设置样式,而是通过CSS类和样式穿透进行修改,以确保代码的可维护性[^3]。 #### 3.5 使用Flexbox和Grid布局 Flexbox和CSS Grid是现代CSS布局的强大工具,适用于复杂的PC网页设计。Flexbox适用于一维布局(如导航栏、按钮组等),而Grid适用于二维布局(如网格系统)。例如,使用Flexbox实现水平居中布局: ```css .container { display: flex; justify-content: center; align-items: center; } ``` Flexbox和Grid布局能够简化复杂的布局需求,同时提供良好的响应式支持[^2]。 #### 3.6 使用框架和工具 为了提高开发效率,可以使用现有的前框架和工具,如Bootstrap、Ant Design Vue等。这些框架提供了丰富的响应式组件和布局工具,能够快速构建PC网页。例如,使用Bootstrap的栅格系统实现响应式布局: ```html <div class="container"> <div class="row"> <div class="col-md-6">列1</div> <div class="col-md-6">列2</div> </div> </div> ``` 通过框架的内置功能,可以快速实现复杂的布局需求,同时确保兼容性和响应性[^2]。 ###
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值