程序员

css布局

2019-01-11  本文已影响19人  miccuci

盒模型

margin/border/padding/content


盒模型结构图

行内元素与块级元素

  1. 块级元素
div、ul、li、h1~h6、p
  1. 行内元素
span、a、img、表单元素(input、select)等

对行内元素,需要注意如下:

布局与定位:display、float、position

  1. display

通过display属性对行内元素和块级元素进行切换

image.png
  1. float

浮动元素不在文档的普通流中,文档的普通流中的元素表现的就像浮动元素不存在一样。浮动的框可以左右移动(根据float属性值而定),直到它的外边缘碰到包含框或者另一个浮动元素的框的边缘。

image.png
image.png
  1. position
image.png 相对定位,根据自身位置定位 绝对定位,根据父元素定位,脱离文档流 固定定位,根据浏览器窗口定位

flex布局

flex实例教程-阮一峰
http://www.ruanyifeng.com/blog/2015/07/flex-examples.html

  1. 水平方向,左侧固定,右侧内容撑满


    image.png
<div class="InputAddOn">
  <span class="InputAddOn-item">...</span>
  <input class="InputAddOn-field">
  <button class="InputAddOn-item">...</button>
</div>

.InputAddOn {
  display: flex;
}
.InputAddOn-field {
  flex: 1;
}
  1. 垂直方向,底部固定,中间内容撑满


    image.png
<body class="Site">
  <header>...</header>
  <main class="Site-content">...</main>
  <footer>...</footer>
</body>

.Site {
  display: flex;
  min-height: 100vh;
  flex-direction: column;
}
.Site-content {
  flex: 1;
}
  1. 圣杯布局


    image.png
<body class="HolyGrail">
  <header>...</header>
  <div class="HolyGrail-body">
    <main class="HolyGrail-content">...</main>
    <nav class="HolyGrail-nav">...</nav>
    <aside class="HolyGrail-ads">...</aside>
  </div>
  <footer>...</footer>
</body>

.HolyGrail {
  display: flex;
  min-height: 100vh;
  flex-direction: column;
}
header,
footer {
  flex: 1;
}
.HolyGrail-body {
  display: flex;
  flex: 1;
}
.HolyGrail-content {
  flex: 1;
}
.HolyGrail-nav, .HolyGrail-ads {
  /* 两个边栏的宽度设为12em */
  flex: 0 0 12em;
}
.HolyGrail-nav {
  /* 导航放到最左边 */
  order: -1;
}

案例分析

上一篇下一篇

猜你喜欢

热点阅读