笔记 - CSS布局

布局分类

  1. 固定宽度布局
    960px, 1000px, 1024px,电脑页面
  2. 不固定宽度布局。
    主要靠文档流,原本就是自适应,不需要额外样式。
    多半是手机页面布局。
  3. 响应式布局

怎样选择布局

截屏2021-02-09 16.36.15.png

Float布局 - 为IE准备

  1. 子元素加float: left和width
  2. 父元素加.clearfix
    e.g.
<style>
/* css reset */
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

/* 使脱离文档流的子元素高度可被父元素包裹 */
.clearfix::after {
  content: '';
  display: block;
  clear: both;
}

/* 
   加入float属性使div.logo和nav脱离文档流
   不再作为block元素存在
   此时父元素header的高度为0
   需要给header加入.clearfix
*/
.logo {
  border: 1px solid red;
  height: 40px;
  width: 100px;
  float: left;
  margin-top: 5px;
  /* 使logo和nav居中对齐 */
}
nav {
  border: 1px solid green;
  height: 50px;
  width: 200px;
  float: right ;
}
header {
  border: 1px solid black;
}
</style>  
<header class="clearfix">
  <div class="logo">LOGO</div>
  <nav>Navigation</nav>
</header>

  • 一般来说float布局里,一行的最后一个元素不写width,由其自身决定。
  • float布局不需要做响应式(由于float基本适配IE,而手机上没有IE,自然不需要为了手机屏幕做的响应式)
  • IE6-7存在双倍margin bug
    1. 可以减半margin
      e.g. 假设原margin-left: 10px
      则在该行下增加
      _margin-left: 5px;
      IE可识别并计算出需要的margin
    2. 可以加display: inline-block对抗bug

** tips: 怎样去除图片下方多余的背景色条**
给需要去掉的img加一行:
vertical-align: top;或者vertical-aligin: middle
原理: line-height


一个简单的nav示例


<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>JS Bin</title>
  <style>
/* css reset */
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}
img {
  max-width: 100%; 
}
/* 卸除列表默认样式 */
ul, ol{
  list-style: none;
}
/* clearfix */
.clearfix::after {
  content: '';
  display: block;
  clear: both;
}

.logo {
  background: black;
  display: inline-block;
  float: left;
}
.logo > img {
  /* 当宽度不好固定时可直接设置高度 */
  height: 26px;
  /* 裁去图片下方多余的背景色块 */
  vertical-align: middle;
}
ul > li {
  float: left;
  border: 1px solid red;
  /* 上下4px,左右0.5倍 */
  padding: 4px 0.5em;
}
ul {
  border: 1px solid green;
  display: inline-block;
}

nav {
  float: left;
}
  </style>
</head>
<body>
  <div class="logo">
    <img src="" alt="logo">
  </div>
<nav>
  <ul class="clearfix">
    <li>首页</li>
    <li>商品</li>
    <li>优惠</li>
    <li>关于</li>
  </ul>
</nav>
</body>
</html>



tips: 用outline替代border进行调试
使用border进行调试时其宽度可能会干扰显示,此时使用outline属性替代border
outline: 1px solid red;

tips: 如何让元素自动居中
margin: 0 auto;
指定auto为第二个参数基本上会告诉浏览器自动确定左右边距本身,方法是将它们均等设置。它保证左右边距将设置为相同的大小。第一个参数0表示顶部和底部边距都将设置为0。
其效果等同于

margin-top:0;
margin-bottom:0;
margin-left:auto;
margin-right:auto;

最好使用margin-left:auto; margin-right:auto;,以防覆盖margin-top, margin-bottom.

负margin(平均布局)

做float平均布局时,一个元素里包裹数个子元素,每个子元素都有自己的margi-right,则最后一个元素会因为其右侧margin溢出而转到下一行
此时可在所有子元素外再套一层父元素 ,并使其margin-right为负数

截屏2021-02-10 17.15.06.png


Flex布局(flex flow) 弹性盒模型

.container {
  display: flex; /* 或者 display: inline-flex */
}
flex-direction 弹性盒模型方向
flex-direction: row;  /* default, left->right */
flex-direction: row-reverse; /* right->left */
flex-direction: column; /* top->down */
flex-direction: colunm-reverse; /* down->top */
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,417评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,921评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,850评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,945评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,069评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,188评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,239评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,994评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,409评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,735评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,898评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,578评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,205评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,916评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,156评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,722评论 2 363
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,781评论 2 351

推荐阅读更多精彩内容

  • CSS布局解决方案(终结版) 前端布局非常重要的一环就是页面框架的搭建,也是最基础的一环。在页面框架的搭建之中,又...
    杀个程序猿祭天阅读 587评论 0 2
  • 1. 前言 前端圈有个“梗”:在面试时,问个css的position属性能刷掉一半人,其中不乏工作四五年的同学。在...
    YjWorld阅读 4,432评论 5 15
  • 前端布局非常重要的一环就是页面框架的搭建,也是最基础的一环。在页面框架的搭建之中,又有居中布局、多列布局以及全局布...
    一个敲代码的前端妹子阅读 775评论 0 12
  • 单列布局 水平居中 水平居中的页面布局中最为常见的一种布局形式,多出现于标题,以及内容区域的组织形式,下面介绍四种...
    阿七笔记阅读 178评论 0 1
  • 单列布局水平居中水平居中 水平居中的页面布局中最为常见的一种布局形式,多出现于标题,以及内容区域的组织形式,下面介...
    Osmond_wang阅读 320评论 0 1