CSS基础语法(三)

十五、CSS定位

1、为什么要使用定位

浮动可以让多个块级盒子一行没有缝隙排列显示,经常用于横向排列盒子

定位则是可以让盒子自由的在某个盒子内移动位置或者固定屏幕中某个位置,并且可以压住其他盒子

2、定位组成

定位:将盒子定在某个位置,所以定位也是在摆放盒子,按照定位的方式拖动盒子

定位 = 定位模式 + 边偏移

  • 定位模式用于指定一个元素在文档中的定位方式。边偏移则决定了该元素的最终位置

定位模式

定位模式决定元素的定位方式,它通过CSS的position属性来设置,其值可以为

语义
static 静态定位
relative 相对定位
absolute 绝对定位
fixed 固定定位
静态定位

静态定位是元素默认定位方式,无定位的方式

选择器 { position: static; }

静态定位按照标准流特性摆放位置,它没有边偏移

静态定位在布局时很少用到

相对定位

相对定位是元素在移动位置的时候,是相对原来的位置来说的(自恋型)

选择器 { position: relative; }

特点

  1. 它是相对自己原来的位置来移动的(移动位置的时候参照点是自己原来的位置)
  2. 原来在标准流的位置继续占有,后面的盒子仍然以标准流的方式对待它(不脱标,继续保留原来的位置)
绝对定位**

绝对定位是元素在移动位置的时候,是相对于它祖先元素来说的(拼爹型)

选择器 { position: absolute; }

绝对定位特点

  1. 如果没有父元素或者祖先元素没有定位,则以浏览器为准定位
  2. 如果祖先元素有定位(相对、绝对、固定定位),则以最近一级的有定位祖先元素为参考点移动位置
  3. 绝对定位不再占用原来的位置(脱标)
固定定位

固定定位是元素固定于浏览器可视化的位置,主要使用场景:可以在浏览器页面滚动时,元素位置不会改变

选择器 { position: fixed; }

特点

  • 以浏览器的可视窗口为参照点移动元素

    • 跟父元素没有任何关系
    • 不随滚动条滚动
  • 固定定位不在占有原先的位置
    • 固定定位也是脱标的,其实,固定定位也可以看做一种特殊的绝对定位

小技巧

  • 让固定定位的盒子left: 50%走到浏览器可视区(也可以看做版心)的一半位置
  • 让固定定位的盒子margin-left: 版心宽度的一半距离,多走版心宽度的一半位置,就可以让固定定位的盒子贴着版心向右侧对齐了
粘性定位

粘性定位可以被认为是相对定位和固定定位的混合

选择器 {
position: sticky;
top: 80px;
}

粘性定位的特点

  • 以浏览器的可视窗口为参照点移动元素(固定定位特点)
  • 粘性定位占有原先的位置(相对定位的特点)
  • 必须添加topleftbottomright其中一个才可以
  • 跟网页滚动搭配使用,兼容性较差,IE不支持

边偏移

边偏移就是定位的盒子移动到最终位置。有topbottomleftright4个属性

边偏移属性 描述
top 顶端偏移量,定义元素相对于去父元素上边线的距离
bottom 底端偏移量,定义元素相对于去父元素下边线的距离
left 左侧偏移量,定义元素相对于去父元素左边线的距离
right 右端偏移量,定义元素相对于去父元素右边线的距离

子绝父相

子级是绝对定位,父级是相对定位

  • 子级绝对定位,不会占有位置,可以放到父盒子里面的任何一个位置,不会影响其他的兄弟盒子
  • 父盒子需要加定位限制盒子在父盒子内显示
  • 父盒子布局时,需要占有位置,因此父亲只能是相对定位

因为父级需要占有位置,因此是相对定位;子盒子不需要占有位置,则是绝对定位

当然,子绝父相不是永远不变的,如果父元素不需要占有位置,子绝父绝也会遇到

3、定位的叠放次序

在使用定位布局时,可能会出现盒子重叠的情况。此时,可以使用z-index来控制盒子的前后次序(z轴)

选择器 { z-index: 1; }

数值可以是正整数、负整数或0,默认是auto,数值越大。盒子越靠上

如果属性值相同,则按照书写顺序,后来居上

数字后面不能加单位

只有定位的盒子才有这个属性

4、拓展

绝对定位的盒子居中

加了绝对定位的盒子不能通过margin: 0 auto;水平居中,但是可以通过以下计算方法实现水平和垂直居中

  • left: 50%:让盒子的左侧移动到父级元素的水平居中的位置
  • margin-left: 100px:让盒子向左移动自身宽度的一半

定位特殊特性

绝对定位和固定定位、浮动类似

  1. 行内元素添加绝对或者固定定位,可以直接设置宽度和高度
  2. 块级元素添加绝对或者固定定位,如果不给宽度或者高度,默认是内容大小

脱标的盒子不会触发外边距塌陷

浮动元素、绝对定位(固定定位)元素的都不会触发外边距合并的问题

绝对定位会完全压住盒子

浮动元素不同,只会压住它下面标准流的盒子,但是不会压住下面标准流盒子里面的文字

但是绝对定位(固定定位)会压住下面标准流所有内容

浮动之所以不会压住文字,因为浮动产生的目的最初是为了做文字环绕效果的。文字会围绕浮动元素

5、网页布局总结

通过盒子模型,清楚知道大部分HTML标签是一个盒子

通过CSS浮动、定位可以让每一个盒子排列成为网页

一个完整的网页,是标准流、浮动、定位一起去完成布置的,每个都有自己的专门用法

  • 标准流

    可以让盒子上下排列或者左右排列,垂直的块级盒子显示就用标准流布局

  • 浮动

    可以让多个块级元素一行显示或者左右对齐盒子,多个块级盒子水平显示就用浮动布局

  • 定位

    定位的最大特点是有层叠的概念,就是可以让多个盒子前后叠压来显示。如果元素自由在某个盒子内移动就用定位布局

十六、元素的显示与隐藏

类似网站广告,当我们点击关闭就不见了,但是我们重新刷新页面,会重新出现

本质:让一个元素在页面中隐藏或者显示出来

1、 display显示隐藏**

display用于设置一个元素应如何显示

display: none;  /* 隐藏对象 */
display: block; /* 除转换为块级元素之外,同时还有显示元素的意思 */

display隐藏元素后,不再占有原来的位置

2、 visibility可见性

visibility属性用于指定一个元素应可见还是隐藏

visibility: visible;  /* 元素可视 */
visibility: hidden; /* 元素隐藏 */

visibility隐藏元素后,继续占有原来的位置

  • 如果隐藏元素想要原来的位置,就用visibility: hidden;
  • 如果隐藏元素不想要原来的位置,就用display: none

3、 overflow溢出

overflow属性指定了如果内容溢出一个元素的框(超出其指定高度及宽度)时,会发生什么

overflow: visible;  /* 显示溢出(默认) */
overflow: hidden; /* 隐藏溢出部分 */
overflow: scroll; /* 溢出部分显示滚动条,不溢出也显示滚动条 */
overflow: auto; /* 自动判别,如果需要,就使用滚动条 */

一般情况下我们都不想让溢出内容显示出来,因为溢出部分会影响布局

但是如果有定位的盒子,请慎用overflow: hidden因为它会隐藏多余部分

CSS基本语法(三)的更多相关文章

  1. css基础语法三

    []伪类选择器] 1.写法: 伪类选择器,在选择器后面,用:分隔,紧接伪类状态: eg : .a:link 2. 超链接的伪类状态: :link - 未访问状态 :visited - 已访问状态 :h ...

  2. CSS基础语法(三) CSS的6种特性

    样式表常用写法及特性(组合.继承.关联性.权值性.层叠性.重要性) 1.样式的组合:把具有相同声明定义的选择符组合在一起,并用逗号隔开.-例如:段落元素p.单元格元素td和类c1可以使用相同样式: p ...

  3. HTML 网页开发、CSS 基础语法——三. HTML概念

    1.纯文本格式 纯文本格式,就是没有任何文本修饰的,没有任何粗体,下划线,斜体,图形,符号,或者特殊字符,及特殊打印格式的文本,只保存文本,不保存其格式设置. ①格式对比 纯文本格式 富文本格式 最常 ...

  4. 常用的CSS缩写语法一些方法小结

    使用缩写可以帮助减少你CSS文件的大小,更加容易阅读.css缩写的主要规则如下: 颜色 16进制的色彩值,如果每两位的值相同,可以缩写一半,例如: #000000可以缩写为#000;#336699可以 ...

  5. css 基本语法及页面引用:

    css基本语法: css的定义方法是: 选择器{ 属性:值; 属性:值; 属性:值; } 选择器是将样式和页面元素关联起来的名称,属性是希望设置的样式属性,每个属性有一个或多个值. 如: div{ w ...

  6. css基本概念与css核心语法介绍

    css基本概念 css是什么?不需要了解太多文字类介绍,记住css是层叠样式表,HTML是页面结构,css负责页面样式,javascrt负责静态页面的交互.CSS 能够对网页中元素位置的排版进行像素级 ...

  7. CSS基础语法(一)

    目录 CSS基础语法(一) 一.CSS简介 1.CSS语法规范 2.CSS代码风格 二.CSS基础选择器 1.标签选择器 2.类选择器 3.id选择器 4.通配符选择器 5.总结 三.CSS字体属性 ...

  8. CSS基本语法(二)

    目录 CSS基本语法(二) 八.CSS复合选择器 1.后代选择器** 2.子选择器 3.并集选择器** 4.伪类选择器 链接伪类选择器 :focus伪类选择器 总结 九.CSS的元素显示样式 1.概念 ...

  9. 《网页设计基础——CSS常用语法》

    网页设计基础--CSS常用语法       一.注释: 例如: /* 在此处书写注释 */     二.清除浏览器默认设置: 例如: *{ /* 全局声明 */ margin: 0; padding: ...

随机推荐

  1. 解决Tomcat9打印台乱码问题

    问题描述: Tomcat打印台.打印出来的字体全是乱码后的显示.影响视觉体验,不利于bug查找和错误排查.故寻找方法去修改. 解决方法: 1.找到目录 2.对日志参数进行修改 3.改动编码 4.修改成 ...

  2. mac osx 准备 nanogui 记录

    !!版权声明:本文为博主原创文章,版权归原文作者和博客园共有,谢绝任何形式的 转载!! 作者:mohist mac osx : 10.14.6 Mojave. 之前没有配置openGL相关开发环境,自 ...

  3. window串口之CreateFile打开串口号大于9返回错误ERROR_FILE_NOT_FOUND

    1. 现象 Windows上,串口存在但是打开串口号大于9的串口返回ERROR_FILE_NOT_FOUND,打开小于10的串口号却正常. 2. 解决 以10号串口为例:将错误示范COM10 改为 \ ...

  4. 【LeetCode】624. Maximum Distance in Arrays 解题报告(C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 大根堆+小根堆 保存已有的最大最小 日期 题目地址:h ...

  5. 【九度OJ】题目1434:今年暑假不AC 解题报告

    [九度OJ]题目1434:今年暑假不AC 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1434 题目描述: "今年暑假不A ...

  6. 【LeetCode】790. Domino and Tromino Tiling 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目地址: https://leetcode.com/problems/domino-a ...

  7. 【LeetCode】775. Global and Local Inversions 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目地址: https://leetcode.com/problems/global-a ...

  8. P1753HackSon的趣味题

    1 #include<stdio.h> 2 #include<algorithm> 3 #include<iostream> 4 #include<stdli ...

  9. Codeforces 931C:Laboratory Work(构造)

    C. Laboratory Work time limit per test : 1 second memory limit per test : 256 megabytes input : stan ...

  10. DAG-GNN: DAG Structure Learning with Graph Neural Networks

    目录 概 主要内容 代码 Yu Y., Chen J., Gao T. and Yu M. DAG-GNN: DAG structure learning with graph neural netw ...