CSS学习笔记05

这篇具有很好参考价值的文章主要介绍了CSS学习笔记05。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

CSS笔记05

定位

position

  • CSS 属性position - 用于指定一个元素在文档中的定位方式。toprightbottomleft 属性则决定了该元素的最终位置。position 有以下常用的属性值:
    • position: static; - 默认值。指定元素使用正常的布局行为,即元素在标准文档流中当前的布局位置。此时 top, right, bottom, leftz-index 属性无效。
    • position: relative; - 相对定位,元素先放置在默认的static位置,再在不改变页面布局的前提下调整元素位置。相对定位的元素不会被移出标准文档流,且元素原先在标准文档流中所占的空间会被保留。
    • position: absolute; - 绝对定位,通过指定元素相对于最近的非static定位祖先元素的偏移,来确定元素位置,如果元素没有非static定位的祖先元素,绝对定位元素会相对于初始块容器的位置进行偏移。(初始块容器是一个有着和浏览器视口一样的尺寸的矩形,它包含根元素<html>。)元素绝对定位后会重新生成一个块级框,而不论原来它在正常文档流中生成何种类型的框。绝对定位的元素会被移出标准文档流,且元素原先在标准文档流中所占的空间不会被保留。
    • position: fixed; - 固定定位,通过指定元素相对于浏览器视口(viewport)本身的位置来指定元素位置。元素的位置在屏幕滚动时不会改变。 元素固定定位后也会重新生成一个块级框,而不论原来它在正常文档流中生成何种类型的框。固定定位的元素也会被移出标准文档流,且元素原先在标准文档流中所占的空间不会被保留。
  • 补充 - 视口(viewport):在电脑图形学里面,视口代表了一个可看见的多边形区域(通常来说是矩形)。在浏览器范畴里,它代表的是浏览器中网站可见内容的部分。视口外的内容在被滚动进来前都是不可见的。
  • 下面我们就来详细演示一下这几种定位方式:

静态定位(默认定位) - static

  • position: static; - 默认值。指定元素使用正常的布局行为,即元素在标准文档流中当前的布局位置。此时 top, right, bottom, leftz-index 属性无效。

  • 首先我们设计一个页面,它由一个父级div和三个子级div组成,我们不手动设置position属性(即此时的position属性为其默认值position: static;):

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>默认位置</title>

    <style>
        body {
            padding: 20px;
        }
        div {
            margin: 10px;
            padding: 5px;
            font-size: 12px;
            line-height: 25px;
        }
        #father {
            border: 2px solid black;
        }
        #first {
            background-color: yellow;
            border: 2px dashed orange;
        }
        #second {
            background-color: deepskyblue;
            border: 2px dashed blue;
        }
        #third {
            background-color: lawngreen;
            border: 2px dashed green;
        }
    </style>

</head>
<body>

<div id="father">
    <div id="first">第一个盒子</div>
    <div id="second">第二个盒子</div>
    <div id="third">第三个盒子</div>
</div>

</body>
</html>
  • 我们查看默认情况下的网页效果:

CSS学习笔记05,CSS学习笔记合集,css,学习,笔记

相对定位 - relative

  • position: relative; - 相对定位,元素先放置在默认的static位置,再在不改变页面布局的前提下调整元素位置。相对定位的元素不会脱离标准文档流,且元素原先在标准文档流中所占的空间会被保留。因此,left: 20px; 会向元素的左外边距边界与其包含块左边界之间添加 20 像素的偏移量,其显示效果便是元素相比于默认位置向右移了 20 像素(在左侧留下了 20 像素的空白)。

  • 我们使用position: relative;将上面默认定位网页中的第一个和第三个div设置为相对定位,并使用toprightbottomleft 属性来改变它们的位置:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>相对定位</title>

    <style>
        body {
            padding: 20px;
        }
        div {
            margin: 10px;
            padding: 5px;
            font-size: 12px;
            line-height: 25px;
        }
        #father {
            border: 2px solid black;
        }
        #first {
            background-color: yellow;
            border: 2px dashed orange;
            position: relative; /* 设置定位方式为相对定位 */
            left: 20px;
            top: -20px;
        }
        #second {
            background-color: deepskyblue;
            border: 2px dashed blue;
        }
        #third {
            background-color: lawngreen;
            border: 2px dashed green;
            position: relative; /* 设置定位方式为相对定位 */
            right: 20px;
            bottom: -20px;
        }
    </style>

</head>
<body>

<div id="father">
    <div id="first">第一个盒子</div>
    <div id="second">第二个盒子</div>
    <div id="third">第三个盒子</div>
</div>

</body>
</html>
  • 查看使用相对定位改变元素位置后的网页效果:

CSS学习笔记05,CSS学习笔记合集,css,学习,笔记

  • 练习:
    • 使用div和超链接a布局页面
    • 每个超链接宽度和高度都为100px,背景颜色为粉色,当鼠标指针移上去时变为蓝色
    • 使用相对定位改变各个超链接的位置

CSS学习笔记05,CSS学习笔记合集,css,学习,笔记

  • 代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
        #box {
            width: 300px;
            height: 300px;
            border: 2px solid red;
            margin: 0 auto;
            padding: 10px;
        }

        a {
            width: 100px;
            height: 100px;
            display: block;
            background-color: pink;
            line-height: 100px;
            font-size: 15px;
            color: white;
            text-align: center;
            text-decoration: none;
        }

        a:hover {
            background-color: blue;
        }

        #second, #fourth {
            position: relative;
            left: 200px;
            top: -100px;
        }

        #fifth {
            position: relative;
            left: 100px;
            top: -300px;
        }
    </style>

</head>
<body>

<div id="box">
    <a id="first" href="#">链接1</a>
    <a id="second" href="#">链接2</a>
    <a id="third" href="#">链接3</a>
    <a id="fourth" href="#">链接4</a>
    <a id="fifth" href="#">链接5</a>
</div>

</body>
</html>
  • 查看网页效果:

CSS学习笔记05,CSS学习笔记合集,css,学习,笔记

绝对定位 - absolute

  • position: absolute; - 绝对定位,通过指定元素相对于最近的非static定位祖先元素的偏移,来确定元素位置,如果元素没有非static定位的祖先元素,绝对定位元素会相对于初始块容器的位置进行偏移。(初始块容器是一个有着和浏览器视口一样的尺寸的矩形,它包含根元素<html>。)元素绝对定位后会重新生成一个块级框,而不论原来它在正常文档流中生成何种类型的框。绝对定位的元素会被移出标准文档流,且元素原先在标准文档流中所占的空间不会被保留。
  • 首先我们来测试一下在没有设置非static定位的祖先元素时,使用绝对定位改变元素第二个子div的位置:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>绝对定位</title>

    <style>
        body {
            padding: 20px;
        }
        div {
            margin: 10px;
            padding: 5px;
            font-size: 12px;
            line-height: 25px;
        }
        #father {
            border: 2px solid black;
        }
        #first {
            background-color: yellow;
            border: 2px dashed orange;
        }
        #second {
            background-color: deepskyblue;
            border: 2px dashed blue;
            position: absolute;
            left: 10px;
            top: 20px;
        }
        #third {
            background-color: lawngreen;
            border: 2px dashed green;
        }
    </style>

</head>
<body>

<div id="father">
    <div id="first">第一个盒子</div>
    <div id="second">第二个盒子</div>
    <div id="third">第三个盒子</div>
</div>

</body>
</html>
  • 查看使用相对定位改变元素位置后的网页效果:

CSS学习笔记05,CSS学习笔记合集,css,学习,笔记

  • 分析:

CSS学习笔记05,CSS学习笔记合集,css,学习,笔记

  • 接着我们再来测试一下在设置了非static定位的祖先元素后,使用绝对定位改变元素第二个子div的位置:
  • 将第二个子div的父级元素father设置为相对定位 -relative(通常我们都习惯将使用绝对定位的元素的父级元素设置为相对定位 - “ 子绝父相 ” ):
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>绝对定位</title>

    <style>
        body {
            padding: 20px;
        }
        div {
            margin: 10px;
            padding: 5px;
            font-size: 12px;
            line-height: 25px;
        }
        /* 设置父级元素为非static定位 */
        #father {
            border: 2px solid black;
            position: relative;
        }
        #first {
            background-color: yellow;
            border: 2px dashed orange;
        }
        #second {
            background-color: deepskyblue;
            border: 2px dashed blue;
            position: absolute;
            left: 10px;
            top: 20px;
        }
        #third {
            background-color: lawngreen;
            border: 2px dashed green;
        }
    </style>

</head>
<body>

<div id="father">
    <div id="first">第一个盒子</div>
    <div id="second">第二个盒子</div>
    <div id="third">第三个盒子</div>
</div>

</body>
</html>
  • 查看使用绝对定位改变元素位置后的网页效果:

CSS学习笔记05,CSS学习笔记合集,css,学习,笔记

  • 分析:

CSS学习笔记05,CSS学习笔记合集,css,学习,笔记

固定定位 - fixed

  • position: fixed; - 固定定位,通过指定元素相对于浏览器视口(viewport)本身的位置来指定元素位置。元素的位置在屏幕滚动时不会改变。 元素固定定位后也会重新生成一个块级框,而不论原来它在正常文档流中生成何种类型的框。固定定位的元素也会被移出标准文档流,且元素原先在标准文档流中所占的空间不会被保留。

  • 下面我们重新写一个例子:在网页中定义两个div,第一个div使用绝对定位移动到初始块容器的右下角,第二个div使用固定定位移动到浏览器视口的右下角:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>固定定位</title>

    <style>
        body {
            height: 1000px;
        }
        /* 绝对定位,相对于初始包含块(和浏览器视口大小相等的一个矩形) */
        div:nth-of-type(1) {
            width: 200px;
            height: 200px;
            background-color: red;
            position: absolute;
            right: 0;
            bottom: 0;
        }
        /* 固定定位,相对于浏览器视口本身 */
        div:nth-of-type(2) {
            width: 100px;
            height: 100px;
            background-color: blue;
            position: fixed;
            right: 0;
            bottom: 0;
        }
    </style>

</head>
<body>

<div>绝对定位div</div>
<div>固定定位div</div>

</body>
</html>
  • 查看网页效果:

CSS学习笔记05,CSS学习笔记合集,css,学习,笔记

  • 可以看到此时两个div都移动到了右下角。那么它们的区别在哪里呢?
  • 下面我们滑动浏览器侧边的滚动条:

CSS学习笔记05,CSS学习笔记合集,css,学习,笔记

  • 我们可以发现使用绝对定位的div的位置会随着屏幕滚动而变化;而使用固定定位的div的位置则不会随着屏幕滚动而变化,始终在当前浏览器视口的右下角。

z-index 与 不透明度

  • 首先我们来理解一下什么是图层:

CSS学习笔记05,CSS学习笔记合集,css,学习,笔记

  • CSS 属性z-index指定一个元素的堆叠顺序。拥有更高堆叠顺序的元素总是会处于堆叠顺序较低的元素的上层。
  • 演示:
  • 首先我们写一个 HTML 页面:

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
	<link rel="stylesheet" href="css/style.css">
</head>
<body>

<div class="content">
    <ul>
        <li><img src="images/bg.png" alt="bg.png"></li>
        <li class="tipText">快来领养猫咪吧</li>
        <li class="tipBg"></li>
        <li>XX宠物救助中心</li>
    </ul>
</div>

</body>
</html>
  • 它的页面效果是这样的:

CSS学习笔记05,CSS学习笔记合集,css,学习,笔记

  • 我们给它添加一些样式:

style.css

#content {
    width: 460px;
    margin: 0;
    padding: 0;
    overflow-block: hidden;
    font-size: 12px;
    line-height: 25px;
    border: 1px solid black;
}

ul, li {
    margin: 0;
    padding: 0;
    list-style: none;
}

/* 设置父级元素相对定位(子绝父相) */
#content {
    position: relative;
}

/* 绝对定位 */
.tipText, .tipBg {
    width: 460px;
    height: 25px;
    position: absolute;
    top: 285px;
}

.tipText {
    color: white;
}

.tipBg {
    background-color: black;
}
  • 此时的页面效果如下:

CSS学习笔记05,CSS学习笔记合集,css,学习,笔记

  • 我们发现我们的提示背景tipBg覆盖住了我们的提示文字tipText,导致我们看不到我们的提示文字。
  • 我们现在给提示文字tipText设置堆叠顺序,让它的堆叠顺序更高:

style.css

#content {
    width: 460px;
    margin: 0;
    padding: 0;
    overflow-block: hidden;
    font-size: 12px;
    line-height: 25px;
    border: 1px solid black;
}

ul, li {
    margin: 0;
    padding: 0;
    list-style: none;
}

#content {
    position: relative;
}

.tipText, .tipBg {
    width: 460px;
    height: 25px;
    position: absolute;
    top: 285px;
}

/* z-index - 设置元素的堆叠顺序 */
.tipText {
    color: white;
    z-index: 99;
}

.tipBg {
    background-color: black;
}
  • 此时的页面效果如下:

CSS学习笔记05,CSS学习笔记合集,css,学习,笔记

  • 补充:为了让页面更美观,我们还可以使用opacity属性设置元素的不透明度:
#content {
    width: 460px;
    margin: 0;
    padding: 0;
    overflow-block: hidden;
    font-size: 12px;
    line-height: 25px;
    border: 1px solid black;
}

ul, li {
    margin: 0;
    padding: 0;
    list-style: none;
}

#content {
    position: relative;
}

.tipText, .tipBg {
    width: 460px;
    height: 25px;
    position: absolute;
    top: 285px;
}

.tipText {
    color: white;
    z-index: 99;
}

/* opacity - 设置元素的不透明度(0.0 ~ 1.0) */
.tipBg {
    background-color: black;
    opacity: 0.5;
    /* filter: alpha(opacity=50); - IE8以及更早版本支持使用filter设置元素的不透明度 */
}
  • 此时的页面效果如下:

CSS学习笔记05,CSS学习笔记合集,css,学习,笔记文章来源地址https://www.toymoban.com/news/detail-691023.html

到了这里,关于CSS学习笔记05的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • CSS学习记录(基础笔记)

    CSS 指的是层叠样式表* (Cascading Style Sheets),主要用于设置HTML页面的文字内容(字体、大小、对齐方式),图片的外形(边框) CSS 描述了如何在屏幕、纸张或其他媒体上显示 HTML 元素 CSS 节省了大量工作。它可以同时控制多张网页的布局,其中外部样式表存储在 CSS 文件中。

    2024年02月14日
    浏览(35)
  • web开发学习笔记(1.html css)

    css负责布局 js负责动作 2.磁盘路径 3.水平线标签 4.引入css 5.无语义标签 6.选择器 7.播放视频和音频 8.换行 br 9.段落标签 p/p 10.首行缩进 11.边距 12.盒子模型,居中显示,  margin后面的四个值顺序为上右下左,auto表示自动 13.表格标签 14.表单标签 15.表单项 16.表单示例

    2024年01月23日
    浏览(54)
  • Nuxt 菜鸟入门学习笔记五:CSS 样式

    Nuxt 官网地址: https://nuxt.com/ Nuxt 在样式设计方面非常灵活。 可以编写自己的样式; 可以引用本地和外部样式表; 可以使用 CSS 预处理器、CSS 框架、UI 库和 Nuxt 模块来为应用程序设计样式。 按照惯例,将本地样式表放在 assets/ 目录下。 在组件内导入的样式表将在 Nuxt 渲染的

    2024年02月10日
    浏览(42)
  • 前端学习笔记:CSS中浮动的原理,定位

    这是本人学习的总结,主要学习资料如下 马士兵教育 float设计的初衷是为了有文字环绕图片的效果,比如下图。 所以有浮动效果的元素一定不会遮挡其他元素的文字。比如有两个 div ,两个 div 都有文字,正常文字在 div 左上角。 我们设置一个浮动一个不浮动,我们会看到浮

    2024年02月03日
    浏览(53)
  • HTML+CSS+JS 学习笔记(三)———Javascript(中)

    🌱博客主页:大寄一场. 🌱系列专栏:前端 🌱往期回顾:HTML+CSS+JS 学习笔记(三)———Javascript(上) 😘博客制作不易欢迎各位👍点赞+⭐收藏+➕关注 目录  JavaScript中的函数 函数的定义和调用 函数的定义  函数的调用 嵌套函数  递归函数  变量的作用域 全局变量和局部

    2024年02月06日
    浏览(81)
  • Python-selenium学习笔记-css选择元素

    方法名:find_element(By.CSS_SELECTOR, \\\"元素名\\\") find_elements找所有 示例: 执行结果:  代表寻找第一个类名为plant的元素, 等效于根据CLASS寻找元素 若要 根据tag名 寻找,不用加“.”, 直接写tag名称即可,如下: 结果:   根据id寻找用“#”+id名, 中间不能有空格 结果: 子元素是

    2024年03月23日
    浏览(45)
  • HTML+CSS+JS 学习笔记(一)———HTML(上)

    🌱博客主页:大寄一场. 🌱系列专栏:前端 😘博客制作不易欢迎各位👍点赞+⭐收藏+➕关注 目录 代码开发工具 概念 HTML模板 body元素的常用属性  HTML 控制标记(标签)的类型 HTML语法规范  HTML常用标签 标题的对齐方式 文字 文字的上标与下标 俗话说:“工欲善其事,必先

    2023年04月14日
    浏览(59)
  • HTML+CSS+JS 学习笔记(一)———HTML(中)

    🌱博客主页:大寄一场. 🌱系列专栏:前端 🌱前期回顾:HTML+CSS+JS 学习笔记(一)———HTML(上) 😘博客制作不易欢迎各位👍点赞+⭐收藏+➕关注 ​ 目录  字符实体  段落 段落标签 段落的换行标签  段落的原格式标签  水平线 水平线标签 ​编辑 水平线标签的宽度  图像

    2023年04月16日
    浏览(51)
  • 【HTML+CSS+JS】登录注册页面大合集

    学JS也学了一段时间,正巧碰上了人工智能要调用人脸识别接口进行真人人脸识别,于是便 萌生了用人脸来进行注册和登录的想法 ,这样的话就需要开发一个登录注册页面,然后用JS绑定注册事件调用人脸识别接口进行登录注册 饭要一口一口吃,路要一步一步走,于是便在开

    2024年02月09日
    浏览(53)
  • 圣诞节酷炫特效合集【含十几个HTML+CSS前端特效+34个桌面酷炫圣诞程序】

    ❤️源码获取:订阅后见文末 ❤️内容介绍:包含HTML+CSS等十几个圣诞特效;以及三十四个桌面酷炫圣诞树合集 ❤️订阅后所得如下: ❤️HTML圣诞+桌面圣诞程序效果如下: 下方展示代码仅举例其中几个 所有效果源码及文件订阅后找博主获取即可

    2024年02月04日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包