Web前端开发笔记——第三章 CSS语言 第六节 CSS定位

简介: Web前端开发笔记——第三章 CSS语言 第六节 CSS定位

一、定义


通过定位,即文档流、浮动定位、层定位三种定位机制来决定盒子模型的位置,在一个盒子中可同时拥有很多种定位机制。


二、文档流定位


文档流定位即为默认的定位方式,该机制的盒子模型的元素都是从上至下,从左至右依次排列的。

其元素类型分为三种:block类型、inline类型、inline-block类型,且这几种元素可以通过display属性显示,且display属性为none时该元素不会显示。


(一)block类型元素


块状类型元素(block)的特点是占页面一行的空间,表示display:block,使其具有block类型元素的特点,块级元素可以设置 width、height 属性,常用的块状类型元素有:<h>标题标签、<p>段落标签、<div>区域标签、<ol>有序列表标签、<ul>无序列表标签、<table>表格标签、<from>表单标签等等。

例如,下列代码:

css代码:

p {
  width: 70px;
  height: 70px;
  display: block;
  background-color: aquamarine;
}

html代码:

<!DOCTYPE html>
<html>
  <head>
  <meta charset="utf-8">
  <title></title>
  <link rel="stylesheet" href="../CSS/new_file.css" />
  </head>
  <body>
  <p>百度搜索</p>
  <p>搜狗搜索</p>
  <p>CSDN</p>
  </body>
</html>

运行结果如下:

1667092440103.jpg


(二)inline类型元素


inline类型元素之间默认带有间距,且和其他元素都在一行上,表示display:inline,inline类型元素的width(宽度)和height(高度)不能设置,其宽度就是文字或图片的宽度,常用的inline类型元素有:<a>超链接标签、<span>行内组合标签等等。

例如,下列代码:

css代码:

p {
  display: inline;
  background-color: aquamarine;
}

html代码:

<!DOCTYPE html>
<html>
  <head>
  <meta charset="utf-8">
  <title></title>
  <link rel="stylesheet" href="../CSS/new_file.css" />
  </head>
  <body>
  <p>百度搜索</p>
  <p>搜狗搜索</p>
  <p>CSDN</p>
  </body>
</html>

运行结果如下:

1667092472118.jpg


(三)inline-block类型元素


与inline类型元素一样,该类型元素不单独占据一行,和其他元素都在一行上,但其盒子模型的 width、height 属性都可设置,表示display:inline-block,常用的inline-block类型有:<img>图像标签等等。

例如,下列代码:

css代码:

p {
    display: inline-block;
    width: 100px;
    height: 100px;
    background-color: aquamarine;
}

html代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <link rel="stylesheet" href="../CSS/style.css" />
</head>
<body>
    <p>百度搜索</p>
    <p>搜狗搜索</p>
    <p>CSDN</p>
</body>
</html>

运行结果如下:

1667092504481.jpg


三、浮动定位


浮动定位是通过float属性来设置的,即浮动元素向左向右移动,它可以是左浮动(float:left)、右浮动(float:right)、不浮动(float:none),不浮动即为默认值。浮动定位可用来图文混排、网页分栏等等。


(一)左浮动和右浮动


左浮动和右浮动定位可以用在图片与文字混合排版时,将其左、右浮动,显得更直观。

例如,下列代码:

css代码:

div {
    width: 100px;
    height: 100px;
    border: 1px solid black;
    float: left;
}
img {
    width: 100px;
    height: 100px;
    border: 1px solid black;
    float: right;
}

html代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <link rel="stylesheet" href="../CSS/style.css" />
</head>
<body>
    <div id="container1"></div>
    <div id="container2"></div>
    <img src="image/1-2.png">
    <img src="image/1-0.png">
    Google uses cookies to deliver its services, to personalise ads and to analyse traffic. You can adjust your privacy
    controls at any time in your Google Settings, or learn more.
    With Google apps like Gmail, Google Pay and Google Assistant, Chrome can help you stay productive and get more out
    of your browser.
    Chrome works hard to protect your data and privacy online. With easy-to-use privacy controls, Chrome lets you
    customise your settings and browsing experience to how you see fit.
</body>
</html>

运行结果如下:

1667092545250.jpg


(二)清除浮动


清除浮动clear属性有三种,分为clear:both(清除两边的浮动)、clear:left(清除左边的浮动)、clear:right(清除右边的浮动)、clear:none,这里none值即为默认值,要注意清除浮动的清除并不是字面意思上的清除该浮动元素。

例如,下列代码,设置清除左浮动“clear:left”:

css代码:

#image1 {
    width: 100px;
    height: 100px;
    border: 1px solid black;
    float: left;
}
#image2 {
    width: 100px;
    height: 100px;
    border: 1px solid black;
    float: left;
    clear: left;
}

html代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <link rel="stylesheet" href="../CSS/style.css" />
</head>
<body>
    <div id="container1"></div>
    <div id="container2"></div>
    <img id="image1" src="image/1-2.png">
    <img id="image2" src="image/1-0.png">
    Google uses cookies to deliver its services, to personalise ads and to analyse traffic. You can adjust your privacy
    controls at any time in your Google Settings, or learn more.
    With Google apps like Gmail, Google Pay and Google Assistant, Chrome can help you stay productive and get more out
    of your browser.
    Chrome works hard to protect your data and privacy online. With easy-to-use privacy controls, Chrome lets you
    customise your settings and browsing experience to how you see fit.
</body>
</html>

运行结果如下:

1667092586937.jpg


四、层定位


层定位是通过postion属性来设置的,指定元素的定位,或使其叠加在其它元素上,position 属性有五个值:static、relative、fixed、absolute、sticky。


(一)static定位


静态定位,即为默认值,没有定位,即正常的文档流对象;

例如,下列代码:

css代码:

p {
    width: 150px;
    height: 70px;
    position: static;
    border: 2px dotted black;
}


html代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <link rel="stylesheet" href="../CSS/style.css" />
</head>
<body>
    <p>这是第一个定位</p>
    <p>这是第二个定位</p>
    <p>这是第三个定位</p>
</body>
</html>


运行结果如下:

1667092622884.jpg


(二)fixed定位


固定定位,即该fixed定位是相对浏览器的窗口是固定的,当滑动上下页面时不会随着页面而滑动,可以通过top、bottom、left、right四个属性来设置距浏览器窗口的距离。

例如,下列代码中,先设置区域边距margin: 0和padding: 0,设置box区域层定位为固定定位,且其相对与浏览器窗口距顶部距离为20px、左侧距离为20px:

css代码:

* {
    margin: 0;
    padding: 0;
}
body {
    width: 350px;
    height: 300px;
    border: 1px solid black;
    background-color: cornsilk;
}
#box {
    width: 120px;
    height: 70px;
    position: fixed;
    border: 2px dotted black;
    top: 20px;
    left: 20px;
}


html代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <link rel="stylesheet" href="../CSS/style.css" />
</head>
<body>
    <div id="box">
        <p>这是第一个定位</p>
        <p>这是第二个定位</p>
        <p>这是第三个定位</p>
    </div>
</body>
</html>

运行结果如下:

1667092657905.jpg

这里的相对与浏览器窗口距顶部距离top:20px、左侧距离left:20px可以通过坐标系来理解更加清楚,如下:

1667092667722.jpg


(三)relative定位


相对定位,relative属性是相对其直接父元素进行定位的,即其元素脱离正常的文档流,但其原位置在文档流依然保留,其它元素不会占据其原来位置。

例如,下列代码,相对父元素就是static默认的静态层定位,其相对两个位置top和left:

css代码:

* {
    margin: 0;
    padding: 0;
}
body {
    width: 700px;
    height: 500px;
    border: 1px solid black;
    background-color: cornsilk;
}
#box1 {
    width: 50px;
    height: 60px;
    background-color: red;
    position: relative;
    border: 2px dotted black;
    top: 20px;
    left: 20px;
}
#box2 {
    width: 60px;
    height: 45px;
    background-color: blue;
    position: static;
    border: 2px dotted black;
}


html代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <link rel="stylesheet" href="../CSS/style.css" />
</head>
<body>
    <div id="box1">
        <p>1</p>
    </div>
    <div id="box2">
        <p>2</p>
    </div>
</body>
</html>

运行结果如下:

1667092705369.jpg


(四)absolute定位


绝对定位,absolute属性,它相对其于静态定位以外的第一个父元素进行定位,若没有则相对于body定位,它与相对定位有区别,其元素也是脱离正常的文档流,但其原位置在文档流中不再存在,其它元素会占据其原来位置。

例如,下列代码,absolute定位相对body定位,其相对两个位置top和left:

css代码:

* {
    margin: 0;
    padding: 0;
}
body {
    width: 700px;
    height: 500px;
    border: 1px solid black;
    background-color: cornsilk;
}
#box1 {
    width: 50px;
    height: 60px;
    background-color: red;
    position: absolute;
    border: 2px dotted black;
    top: 20px;
    left: 20px;
}
#box2 {
    width: 60px;
    height: 45px;
    background-color: blue;
    position: static;
    border: 2px dotted black;
}

html代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <link rel="stylesheet" href="../CSS/style.css" />
</head>
<body>
    <div id="box1">
        <p>1</p>
    </div>
    <div id="box2">
        <p>2</p>
    </div>
</body>
</html>

运行结果如下,可以将其与相对定位比较:

1667092758184.jpg

且相对定位元素通常被用来作为绝对定位元素的容器块:

例如,下列代码:

css代码:

* {
    margin: 0;
    padding: 0;
}
#box1 {
    width: 200px;
    height: 200px;
    position: relative;
    border: 2px solid pink;
}
#box2 {
    width: 80px;
    height: 45px;
    position: absolute;
    bottom: 0;
}
img {
    height: 200px;
    width: 150px;
}

html代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <link rel="stylesheet" href="../CSS/style.css" />
</head>
<body>
    <div id="box1">
        <img src="image/1-0.png">
        <div id="box2">
            <p>谷歌浏览器</p>
        </div>
    </div>
</body>
</html>

运行结果如下:

1667092792127.jpg


(五)sticky定位


sticky属性,设置后它会根据用户对页面的滚动而定位在固定的位置,必须指定 top、left、bottom、right 四个值其中一个,该定位才能生效。

例如,下列代码:

css代码:

#sticky {
    position: sticky;
    top: 0;
    padding: 10px;
    border: 1px solid green;
    background-color: cornsilk;
}

html代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <link rel="stylesheet" href="../CSS/style.css" />
</head>
<body>
    <p>当滚动下方页面时,设置的粘性定位不会消失,而是随用户滑动在上方出现。</p>
    <div id="sticky">CSS是一门前端开发语言</div>
    <div style="padding-bottom:200px">
        <p>1990年,Tim Berners-Lee和Robert Cailliau共同发明了Web。1994年,Web真正走出实验室。
            从HTML被发明开始,样式就以各种形式存在。不同的浏览器结合它们各自的样式语言为用户提供页面效果的控制。最初的HTML只包含很少的显示属性。
            随着HTML的成长,为了满足页面设计者的要求,HTML添加了很多显示功能。但是随着这些功能的增加,HTML变的越来越杂乱,而且HTML页面也越来越臃肿。于是CSS便诞生了。
            1994年哈坤·利提出了CSS的最初建议。而当时伯特·波斯(Bert Bos)正在设计一个名为Argo的浏览器,于是他们决定一起设计CSS。
            其实当时在互联网界已经有过一些统一样式表语言的建议了,但CSS是第一个含有“层叠”丰意的样式表语言。在CSS中,一个文件的样式可以从其他的样式表中继承。读者在有些地方可以使用他自己更喜欢的样式,在其他地方则继承或“层叠”作者的样式。这种层叠的方式使作者和读者都可以灵活地加入自己的设计,混合每个人的爱好。
        </p>
</body>
</html>


运行结果如下:

1667092825093.jpg

当滑动滑动条时,上面定义的内容会一直在上方显示,如下:

1667092834881.jpg


(六)z-index重叠


可以通过position的z-index属性可以重叠元素,z-index的值可以为正或负,通过这点可以来指定元素重叠顺序,对于两个元素设置z-index属性,值大的在上面,除了静态定位其它定位都可以设置该属性。



相关文章
|
10月前
|
并行计算 前端开发 JavaScript
Web Worker:让前端飞起来的隐形引擎
在现代 Web 开发中,前端性能优化是一个至关重要的课题,尤其是对于计算密集型的应用,如图像处理、视频处理、大规模数据分析等任务。单线程的 JavaScript 引擎常常成为性能瓶颈,导致应用变得迟缓。Web Worker,作为一种强大的技术,使得前端能够在后台进行并行计算,从而实现高效的任务处理,不影响主线程的运行和用户的交互体验。
809 108
|
前端开发 JavaScript
探索现代Web应用的微前端架构
【10月更文挑战第40天】在数字时代的浪潮中,Web应用的发展日益复杂多变。微前端架构作为一种新兴的设计理念,正逐步改变着传统的单一前端开发模式。本文将深入探讨微前端的核心概念、实现原理及其在实际项目中的应用,同时通过一个简单的代码示例,揭示如何将一个庞大的前端工程拆分成小而美的模块,进而提升项目的可维护性、可扩展性和开发效率。
|
12月前
|
Web App开发 编解码 移动开发
零基础音视频入门:你所不知道的Web前端音视频知识
本文回顾了Web端音视频的发展历程,同时还介绍了视频的编码、帧率、比特率等概念,提到了Canvas作为视频播放的替代方案,以及FFmpeg在音视频处理中的重要作用等知识。
338 1
|
前端开发
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
1232 1
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
|
前端开发 JavaScript 搜索推荐
HTML与CSS在Web组件化中的核心作用及前端技术趋势
本文探讨了HTML与CSS在Web组件化中的核心作用及前端技术趋势。从结构定义、语义化到样式封装与布局控制,两者不仅提升了代码复用率和可维护性,还通过响应式设计、动态样式等技术增强了用户体验。面对兼容性、代码复杂度等挑战,文章提出了相应的解决策略,强调了持续创新的重要性,旨在构建高效、灵活的Web应用。
442 6
|
前端开发 JavaScript UED
在数字化时代,Web 应用性能优化尤为重要。本文探讨了CSS与HTML在提升Web性能中的关键作用及未来趋势
在数字化时代,Web 应用性能优化尤为重要。本文探讨了CSS与HTML在提升Web性能中的关键作用及未来趋势,包括样式表优化、DOM操作减少、图像优化等技术,并分析了电商网站的具体案例,强调了技术演进对Web性能的深远影响。
271 5
|
监控 前端开发 JavaScript
探索微前端架构:构建可扩展的现代Web应用
【10月更文挑战第29天】本文探讨了微前端架构的核心概念、优势及实施策略,通过将大型前端应用拆分为多个独立的微应用,提高开发效率、增强可维护性,并支持灵活的技术选型。实际案例包括Spotify和Zalando的成功应用。
|
消息中间件 前端开发 JavaScript
探索微前端架构:构建现代Web应用的新策略
本文探讨了微前端架构的概念、优势及实施策略,旨在解决传统单体应用难以快速迭代和团队协作的问题。微前端允许不同团队独立开发、部署应用的各部分,提升灵活性与可维护性。文中还讨论了技术栈灵活性、独立部署、团队自治等优势,并提出了定义清晰接口、使用Web组件、状态管理和样式隔离等实施策略。
|
前端开发 Web App开发
css使用笔记
最近写一个前台页面,因为不用考虑太多兼容性问题,尝试了很多css3的东西,记录下。 1、渐变和边框阴影 最初的视觉稿,上面有很多地方颜色使用了渐变,为了不使用图片,用了很挫的方式来实现:从图片渐变开始、中间、结束部分,用gimp的吸管获取颜色,然后转换成css的渐变。不过因为渐变每个浏览器支持方
1833 0

热门文章

最新文章

  • 1
    前端如何存储数据:Cookie、LocalStorage 与 SessionStorage 全面解析
    1170
  • 2
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(九):强势分析Animation动画各类参数;从播放时间、播放方式、播放次数、播放方向、播放状态等多个方面,完全了解CSS3 Animation
    513
  • 3
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
    399
  • 4
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(七):学习ransform属性;本文学习 rotate旋转、scale缩放、skew扭曲、tanslate移动、matrix矩阵 多个参数
    395
  • 5
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
    509
  • 6
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(五):背景属性;float浮动和position定位;详细分析相对、绝对、固定三种定位方式;使用浮动并清除浮动副作用
    681
  • 7
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(四):元素盒子模型;详细分析边框属性、盒子外边距
    1213
  • 8
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(三):元素继承关系、层叠样式规则、字体属性、文本属性;针对字体和文本作样式修改
    272
  • 9
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式
    1009
  • 10
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(一):CSS发展史;CSS样式表的引入;CSS选择器使用,附带案例介绍
    472