CSS基础03

简介: CSS基础03

页面布局三大核心,盒子模型,浮动和定位

1.盒子模型

  • 盒子模型组成:

    盒子模型组成的主要有 边框border,外边距margin ,内边距padding,内容content;
    • 边框border:

      border可以设置元素的边距,边距有三部分,宽度,验收,颜色
      border: border-width || border-style || border-color
      边框四个边可以分开来写,如border-top:
      border-collapse:collapse可以合并表格的相邻边框
      边框会影响盒子的实际大小;增加盒子大小,盒子的总大小为宽度或高度加上两个边框的大小;
    • 内边距

      padding用于设置内边距,即盒子边框和内容的距离.默认是0
      语法 padding : 上 右 下 左
      padding也会影响盒子的大小;如果盒子已有宽度和高度,内边距会撑大盒子的大小
      如果盒子没有指定高度和宽度,那么padding不会撑开盒子;只有指定宽度才会撑大宽度,指定高度才会撑大高度;
      在这里插入图片描述
    • 外边距margin

      margin用于设置外边距,即盒子与盒子之间的距离
      语法 margin: top right bottom left 上右下左
      外边距可以让设置了width的块级元素水平居中:
      {margin: 0 auto}

      行内元素或行内快级元素水平居中,给父元素添加属性text-align: center

      嵌套关系的块级元素垂直外边距的塌陷问题;在父元素和子元素同时具有margin-top属性时,以最大值为准;
      解决方式有:给父元素
      设置边框 border {1px }
      设置内边距
      添加overflow: hidden
      浮动的盒子不会有这个塌陷问题

      ---

      清除内外边距:
      不同的网页元素带有不同的内外边距,不同浏览器也不一样,此时考虑清除内外边距; * { margin:0 padding:0 }
      行内元素尽量只设置左右边距,考虑兼容性问题;

CSS3盒子属性

  • 圆角边框:

    用于设置元素的外边框圆角
    border-radius : length 单位是px 或者是百分比
    原理:盒子矩形边框和圆形的交集
    border-radius是复合属性,最多可以有四个值,表示四个角;左上、右上、右下,坐下
  • 盒子阴影

    box-shadow,属性如下图:
    盒子阴影不占空间,不影响盒子大小

在这里插入图片描述

  • 文字阴影

    text-shadow: h-shadow v -shadow blur color
    • 在这里插入图片描述

2.浮动

传统网页布局的三种方式: 普通流,浮动,定位

普通流(标准流):就是标签按照默认方式排列;
块级元素独占一行,从上向下顺序排列,行内元素从左向右排列;碰到父元素边缘则自动换行


网页布局第一准则:

多个块级元素纵向排列找标准流,横向排列找浮动

什么是浮动:

float属性用于创建浮动层,将其移动到一边,直到左边缘或右边缘触及到包含块或另一个浮动框的边缘;

浮动特性

  • 浮动元素会脱离标准流

    • 浮动的盒子不再保留原来的位置
    • 脱离了标准流的控制
  • 浮动元素会一行内显示

    • 如果多个盒子都添加了浮动,那么所有浮动的盒子将会在一行内显示,并且顶端对齐;
    • 浮动的元素是互相紧贴到一起,如果父级元素的宽度装不下元素,浮动元素会另起一行靠左排列
  • 浮动元素会具有行内块元素的特点

    • 任何元素都可以浮动,给元素添加了浮动,元素就具有了行内块元素的特性;
    • 如果行内元素给了浮动,那么行内元素就可以设置高度和宽度
    • 如果块级元素添加了浮动,且没有设置宽度,那它的大小根据内容而定;

    为了约束浮动元素位置,网页布局时,先用标准流的父元素排列上下位置,之后内部子元素采取浮动排列左右的位置

  • 浮动布局要点

    • 先父元素上下布局,后浮动元素左右布局
    • 理论上一个元素浮动,后面的兄弟元素也要浮动;
    • 浮动的盒子只会影响后面盒子的标准流,不会影响前面的标准流;div在服务的盒子前面,还是会独占一行;

清除浮动

很多情况下,父盒子不方便给高度,但子盒子浮动又不占有位置,最后父盒子的高度是0,就会影响到下面的标准流盒子;这个时候就需要清除服务,就是清除浮动元素的影响;
清除浮动后,父元素就会根据浮动的子元素自动计算高度;
  • 语法:

在这里插入图片描述

  • 清除浮动的方法:

    • 清除浮动的策略是闭合浮动,只让浮动在父元素内影响,不影响父盒子外面的盒子;
    • 额外标签法:在最后一个浮动元素的后面添加一个元素,添加样式属性 div style= "clear:both"></div; 会添加多个无意义的标签
    • 父级添加overflow属性,设置为auto,hidden 或scroll
    • 父元素添加:after伪类; 不需要添加额外标签,
    • 给父元素添加 双伪元素;before和after; 原理是在父盒子中的第一个元素和最后一个元素添加一个块级元素;

在这里插入图片描述

定位

  • 为什么需要定位

    定位可以让盒子在指定盒子内自由移动位置,并压住其他盒子,而浮动只能让盒子排在一行;
  • 定位的组成

    定位是定位模式+边偏移
    定位模式用于指定一个元素在文档中的定位方式,使用CSS属性 position;值包括static、relative,absolute,fixed
    边偏移决定了改元素的最终位置;CSS中有top left right bottom四个属性;配合定位属性position使用
    • 静态定位static

      是元素的默认定位方式,按照标准流特性摆放位置,没有偏移
    • 相对定位relative

      元素在移动时会以自己原来的位置移动; 原来在标准流中的位置还保留,后面的盒子以标准流对待它(不脱标)
    • 绝对定位absolute

      绝对定位是元素在移动位置的时候,是相对于它祖先元素移动;
      如果没有祖先元素或祖先元素没有定位,则以浏览器为准对齐
      如果祖先元素有定位,则以最近一级有定位的祖先元素为准移动位置;
      觉得定位不占用原来标准流的位置,即脱标
    • 子绝父相

      子元素是绝对定位, 父元素则需要是相对定位,因为相对定位会保留位置,而绝对定位不保留位置;
    • 固定定位fixed

      以浏览器的可视窗口为准移动元素
      与父元素没有任何关系
      不随着滚动条的滚动而滚动
      不占用标准流的位置,是一种特殊的绝对定位
    • 粘性定位 sticky

      粘性定位可以被认为是相对定位和固定定位的混合
      已可视窗口为参考点
      占有标准流位置
      必须要有left,top right bottom中的一个属性
    • 定位总结;

    在这里插入图片描述

    • 定位布局的叠放顺序属性 z-index

      默认值auto,属性为数字,可以有负值,但没有单位
      当都没有z-index属性,按照属性叠放,后来居上
    • 绝对定位盒子居中:

      > left和top 设置 父元素宽度50%
      > margin-left和margin-top设置自身元素宽度的一半
      
    • 定位的特殊特性

      行内元素添加定位,可以直接设置宽度和高度
      块内元素添加定位,默认的是内容的高度和宽度
      脱标的盒子不会触发外边距塌陷问题
    • 浮动和定位的区别:

      浮动会压住后面的盒子,不会压住盒子中的文字;(浮动最初的目的是为了做文字环绕效果的,文字会围绕着浮动元素)
    绝对定位会压住标准流的盒子内容;

网页布局总结:

  • 网页布局是通过标准流,浮动,定位一起完成的;
  • 标准流可以让盒子上下或左右排列
  • 浮动可以让多个块级元素一行显示或左右对齐盒子
  • 定位有层级概念,可以让多个盒子前后叠压显示;

部分开发规范

#### CSS属性书写顺序

  • 布局定位:display 等
  • 自身属性:width,height 等
  • 文本属性:color font text- 等
  • 其他属性:css3属性等

在这里插入图片描述

布局整体思路

  • 确定页面的版心(可视区)
  • 分享行模块,以及行模块里的列模块;
  • 一行中的列模块经常为浮动布局,先大小,后位置
  • 先结构,后样式。
  • 先布局,后代码。

html结构

  • 导航栏的实际开发中,不会直接使用连接a,而是使用li包含链接的做法

    直接使用a,搜索引擎会辨别为关键字堆砌,有降权的风险

-

相关文章
|
前端开发
实验:CSS+Div基础 - 预习报告
网页设计技术实验预习报告。
283 1
实验:CSS+Div基础 - 预习报告
|
Web App开发 前端开发 Windows
CSS基础1 | 青训营笔记
本期作为复习CSS的笔记,比较基础。当然即便最基础的东西也欢迎各路高手指点,以防地基不稳大厦崩塌hhh
CSS基础1 | 青训营笔记
|
前端开发 JavaScript 容器
通俗重制系列--CSS基础
通俗重制系列--CSS基础
129 0
|
前端开发 JavaScript Java
计算机二级web题目(4)--CSS基础
计算机二级web题目(4)--CSS基础
162 1
|
前端开发
CSS基础之选择器
总所周知,css可以为网页设置多种多样的样式,那怎么样可以精确为每一个html标签设置相应的样式呢?
|
前端开发 人机交互
Web开发及人机交互导论 实验三 CSS+DIV基础
Web开发及人机交互导论 实验三 CSS+DIV基础
173 0
Web开发及人机交互导论 实验三 CSS+DIV基础
|
前端开发
CSS基础-塌陷及定位
clear:right; 右侧不允许有浮动元素
124 0
|
前端开发
CSS 基础(下)
CSS 基础(下)
76 0
CSS 基础(下)
|
前端开发 编译器 C++
CSS 基础(中)
CSS 基础(中)
115 0
CSS 基础(中)