CSS 实现三栏自适应布局

CSS 实现三栏自适应布局

所谓三列自适应布局指的是两边定宽,中间block宽度自适应。这道题在今年网易内推前端工程师面试的时候也被问到。 我这里主要分为两大类,一类是基于position传统的实现,一类是基于css3新特性弹性盒模型布局实现。

1. 基于传统的position和margin等属性进行布局

这里也分为三种方法,分别为绝对定位法,圣杯布局,自身浮动法。

1).绝对定位法

立即学习“前端免费学习笔记(深入)”;

绝对定位法原理是将左右两边使用absolute定位,因为绝对定位使其脱离文档流,后面的center会自然流动到他们上面,然后使用margin属性,留出左右元素的宽度,既可以使中间元素自适应屏幕宽度。

代码如下:

     layout_box      

实现三列宽度自适应布局

我是左边

我是中间

css代码:

html,body{ margin: 0px;width: 100%; }h3{height: 100px;margin:20px 0 0;}#left,#right{width: 200px;height: 200px; background-color: #ffe6b8;position: absolute;top:120px;}#left{left:0px;}#right{right: 0px;}#center{margin:2px 210px ;background-color: #eee;height: 200px; }

该法布局的好处,三个p顺序可以任意改变。不足是 因为绝对定位,所以如果页面上还有其他内容,top的值需要小心处理,最好能够对css样式进行一个初始化,就像在上面例子中加了一个标题,如果不对样式进行初始化,则两边和中间的值会对不齐。 另外,随着浏览器窗口缩小,小于200px的时候,会发生压缩。
结果如图,可以看到中间栏宽度随着屏幕大小伸缩。

2).使用自身浮动法

自身浮动法的原理就是使用对左右使用分别使用float:left和float:right,float使左右两个元素脱离文档流,中间元素正常在正常文档流中,使用margin指定左右外边距对其进行一个定位。

HTML代码:

使用自身浮动法定位

我是左边

我是右边

我是中间

css代码:

#left_self,#right_self{ width: 200px;height: 200px; background-color: #ffe6b8 }#left_self {float: left;}#right_self{float: right;}#center_self{margin: 0 210px;height: 200px; background-color: #a0b3d6}

该布局法的好处是受外界影响小,但是不足是 三个元素的顺序,center一定要放在最后,这是和绝对定位不一样的地方,center占据文档流位置,所以一定要放在最后,左右两个元素位置没有关系。当浏览器窗口很小的时候,右边元素会被击倒下一行。

3). 圣杯布局

圣杯布局的原理是margin负值法。使用圣杯布局首先需要在center元素外部包含一个p,包含p需要设置float属性使其形成一个BFC,并设置宽度,并且这个宽度要和left块的margin负值进行配合,具体原理参考这里。这里对圣杯布局解释特别详细。

实现代码:

使用margin负值法进行布局

CSS代码:

#wrap{ width: 100%;height: 100px; background-color: #fff;float: left;}#wrap #center{ margin:0 210px; height: 100px;background-color: #ffe6b8; }#left_margin,#right_margin{ float: left;width: 200px;height: 100px;background-color: darkorange }#left_margin {margin-left: -100%; background-color: lightpink}#right_margin{margin-left: -200px;}

该方法在网站布局中非常常见,也是面试常考点,优点是三栏相互关联,有一定的抗性。需要注意的是,布局中间部分一定要放在前面,左右顺序不限制。对于left快的margin负值一定要等于wrap的宽度。
三种方法实现三栏网页宽度自适应布局方法见下图。

CSS 实现三栏自适应布局

2 , css3新特性

在外围包裹一层p,设置为display:flex;中间设置flex:1;但是盒模型默认紧紧挨着,可以使用margin控制外边距。

代码:

css样式:

#box{width:100%;display: flex; height: 100px;margin: 10px;}#left_box,#right_box{width: 200px;height: 100px; margin: 10px; background-color: lightpink}#center_box{ flex:1; height: 100px;margin: 10px; background-color: lightgreen}

注意: center一定要放到中间。

效果图如下:

CSS 实现三栏自适应布局

css布局还有很多其他特性,下一步准备研究清楚浮动,再研究position、和display属性。

推荐教程:《CSS教程》

以上就是CSS 实现三栏自适应布局的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1615644.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月24日 05:00:10
下一篇 2025年12月24日 05:00:16

相关推荐

  • CSS Flex 的用途详解

    一、可以利用flex来布局一个p在另一个p里面水平垂直居中 如:html代码:  css代码: .container{width:600px;height:400px;border:1px solid blue;display: flex;justify-content:center;align-i…

    好文分享 2025年12月24日
    000
  • css中的伪元素有什么作用

    伪元素可以用来添加一些选择器的特殊效果。 (推荐教程:css快速入门) 语法: selector:pseudo-element {property:value;} 举例: 1、”first-line” 伪元素用于向文本的首行设置特殊样式。 立即学习“前端免费学习笔记(深入)”…

    2025年12月24日
    000
  • CSS 中 @ 用法详解

    at-rule是一个声明,为CSS提供执行或怎么表现的指令。每个声明以@开头,后紧跟一个可用的关键字,这个关键字充当一个标识符,用于表示CSS该做什么。这是一个通用的语法,尽管每个at-rule有其它语法变体。 常规规则 常规规则遵循下面的语法: 代码如下: 立即学习“前端免费学习笔记(深入)”; …

    2025年12月24日
    000
  • 如何建立纯css的滑块

    可以使用 max-height 属性来建立纯 css 的滑块。 (推荐教程:css快速入门) 属性介绍: max-height 属性设置元素的最大高度。max-height属性不包括填充,边框,或页边距! 代码实现: 立即学习“前端免费学习笔记(深入)”; .slider { max-height:…

    2025年12月24日
    000
  • CSS的三种样式形式?

    CSS的三种样式形式? 1、内联式,是把css代码直接写在现有的HTML标签中; 这里文字是红色。 2、嵌入式,是把css样式代码写在“style”标签之间; span{color:red;} 3、外联式,是把css代码写一个单独的外部文件中,通过“link”标签引入。 立即学习“前端免费学习笔记(…

    2025年12月24日
    000
  • 一分钟了解CSS的主要功能

    CSS主要功能及定义 主要功能:  1、可创建新模板,开始创建的新模板的CSS代码为“默认”模板的代码  2、可对您定义的模板CSS进行“编辑”、“重命名”、“删除”、“使用”等操作。  立即学习“前端免费学习笔记(深入)”; 3、在保存自定义CSS后系统会自动生成套入该CSS的空间主页截图,点击该…

    2025年12月24日
    000
  • CSS3如何实现图片滚动播放效果(附代码)

    CSS3实现图片滚轮效果 在平常我们使用一些滚动图片的效果,都是用javascript代码(JQuery)实现,但是在如今Html5和CSS3盛行的时代,可以替代javascript代码来实现一些常见的效果来提高网页的加载速度,对用户来说体验是更加友好的。 特别是现在微信平台开发比较火热的年代,同样…

    2025年12月24日
    000
  • css中标签嵌套规则有哪些

    嵌套规则介绍: (推荐教程:css快速入门) 1、body 可以直接包含块状元素、ins、del、script等不可以直接包含行内元素; 2、ins 和 del(行内元素)可以包含块状元素或者行内元素,其他任何行内元素都不允许包含块状元素; 3、p、h1-h6 可以直接包含行内元素和文本信息,但是不…

    2025年12月24日
    000
  • 两分钟带你了解在CSS中三种使图片居中的方法

    在做网页美化的时候,都会用到图片居中,那你知道在CSS中有哪三种使图片居中的方法吗?下面我们一起看看吧。 1.利用display:table-cell,具体代码如下: html代码如下:   @@##@@ css代码如下: .img_wrap{ width: 400px; height: 300px…

    2025年12月24日 好文分享
    000
  • css优化策略介绍

    css优化,提高性能的方法: (推荐教程:css快速入门) 避免过度约束 避免后代选择符 避免链式选择符 立即学习“前端免费学习笔记(深入)”; 使用紧凑的语法 避免不必要的命名空间 避免不必要的重复 最好使用表示语义的名字。一个好的类名应该是描述他是什么,而不是像什么 避免!important,可…

    2025年12月24日
    000
  • 手把手教你CSS如何实现毛玻璃效果

    今天在做一个登录界面的时候,由于视觉给的页面背景图片太鲜艳亮眼,导致页面中间的登录表单框很不显眼,效果很差。就想到了做成毛玻璃的效果,现在分享出来,大家一起看看吧。 页面结构如下: 由于之前用过CSS filter属性,在属性值中使用blur()函数可以起到毛玻璃效果,所以我有2个思路来实现突出登录…

    2025年12月24日
    000
  • 如何清理无用的CSS样式,你知道吗?

    我们在编写CSS样式的时候,往往或遭遇CSS样式的修改或者界面设计的变更,页面的CSS在经历几个版本的修改之后,可能有些样式已经用不到了,或许将某些样式更名了而原来的忘了删除,总之页面中可能存在着一些无用的样式。 这些无用的浪费了一些服务器空间和带宽消耗,也会增大我们的维护成本。那么有没有一些办法来…

    2025年12月24日 好文分享
    000
  • css中隐藏元素的方法有哪些?有什么区别?

    隐藏元素的方法: (推荐学习:css快速入门) display:none 隐藏对应元素,在文档流中不再给他分配空间,各边元素会合拢但是资源会加载,DOM可以访问。 visibility:hidden 隐藏对应元素,但是在文档流中保留原来的空间,资源会加载。 opacity:0 可以点击,占据空间,可…

    2025年12月24日
    000
  • 一分钟带你了解css兼容ie的写法

    许多同学都在问CSS如何兼容ie浏览器,下面我就来介绍一下css兼容ie的写法,大家一起来看看,如有错误和不足,欢迎指出。 width:auto;是宽度自动的意思。 9是hack css 的一种写法,这种在正常css代码后面加”9″的方式,只有IE浏览器才能识别,其他浏览器会…

    2025年12月24日
    000
  • 2021css常用代码大全

    css常用代码大全 html+css可以很方便的进行网页的排版布局,还能减少很多不必要的代码。 一.文本设置 1、font-size: 字号参数  立即学习“前端免费学习笔记(深入)”; 2、font-style: 字体格式 3、font-weight: 字体粗细 4、颜色属性 color: 参数 …

    2025年12月24日
    000
  • display:inline是什么意思?

    display:inline的意思是设置对象做为行内元素显示,inline是内联对象的默认值,而一般用的div是块级元素,默认display属性是block,但将div的display设置为inline的话,则多个div显示在一行。 display:inline的意思是: 设置对象做为行内元素显示,…

    2025年12月24日
    000
  • style标签怎么用?

    style标签的用法是:1、style标签放在head标签里;2、作为属性放在元素的开始标签中,每个属性值之间使用【;】分开;3、使用属性color,添加style属性的字体颜色。 style标签的用法是: 1、style 属性的作用: 提供了一种改变所有 HTML 元素的样式的通用方法。 样式是 …

    2025年12月24日 好文分享
    000
  • CSS3变形-旋转实现4色花-案例解析(代码实例)

    本文目标: 1、掌握css3中如何让元素旋转 问题: 1、实现以下效果,且使用纯DIV+CSS 附加说明: 1、带蝴蝶的粉色圆圈是一张图片 立即学习“前端免费学习笔记(深入)”; 2、中间的“4色花”是由4个半圆通过旋转生成的,每个半圆的直径为180px 现在来具体操作 1、准备素材:当前案例的素材…

    2025年12月24日
    000
  • 纯 CSS 如何实现鼠标跟随效果?(代码详解)

    鼠标跟随,顾名思义,就是元素会跟随着鼠标的移动而作出相应的运动。通常而言,css 负责表现,javascript 负责行为。而鼠标跟随这种效果属于行为,要实现通常都需要借助 js。 当然,本文的重点,就是介绍如何在不借助 JS 的情况下使用 CSS 来模拟实现一些鼠标跟随的行为动画效果。 我们先来看…

    2025年12月24日 好文分享
    000
  • 一文搞懂 flex中的自动 margin

    为了引出本文的主题,先看看这个问题,最快水平垂直居中一个元素的方法是什么? 水平垂直居中也算是 CSS 领域最为常见的一个问题了,不同场景下的方法也各不相同,各有优劣。嗯,下面这种应该算是最便捷的了: .g-container { display: flex;} .g-box { margin: a…

    2025年12月24日 好文分享
    000

发表回复

登录后才能评论
关注微信