CSS3-06 样式 5

浮动(Float)

关于浮动,要说的可能就是:一个设置了浮动的元素会尽量向左移动或向右移动,且会对其后的元素造成影响,其后的元素会排列在其围绕在其左下或右下部。似乎就这么简单,但是在实际开发中,它应用这的是非常的多。在此,我会浅析浮动的基本原理,然后通过实例的方式尽量让大家对浮动有更加深刻的理解
  • 关于浮动
    • 如何设置元素的浮动
      • 设置一个元素的浮动很简单

        // 只能设置一个元素左浮动或又浮动
        float: left/right;
      • 需要特别注意的是:浮动 只能 作用于文档流中的元素。也就是说对于四种定位方式,只对默认定位(Static)、相对定位(Relative)的元素起作用。

    • 浮动对其周围元素的作用
      • 浮动只对其后边的元素有影响,对前边的元素没有任何影响。
        • 示例

          <!DOCTYPE html>
          <html lang="en">
          <head><meta charset="UTF-8"><title></title><style>#red-div {background-color: red;width: 100px;height: 100px;}#blue-div {background-color: blue;width: 100px;height: 100px;float: right;}</style>
          </head>
          <body><div id="red-div"></div><p id="before">This is a paragraph. This is a paragraph. This is a paragraph. </p><div id="blue-div"></div><p id="after">This is another paragraph. This is another paragraph. This is another paragraph. This is another paragraph. This is another paragraph. This is another paragraph. This is another paragraph. This is another paragraph. This is another paragraph. This is another paragraph. This is another paragraph. This is another paragraph. This is another paragraph. This is another paragraph. This is another paragraph. This is another paragraph.</p>
          </body>
          </html>

          783575-20160527164125506-989396274.png

      • 浮动对其后边元素的影响
        • 其后为非浮动元素
          • 我们说,“浮动元素后非浮动元素会围绕在其左下或右下排布”。准确的说,“浮动元素后非浮动元素会按照文档流的流失布局来排布,只不过会空出浮动元素所占的空间(浮动元素是处在文档流中的,会占据文档流的空间)”。但是有一点你需要明白:其后边元素的所在的容器的是不会为浮动元素流出空间的。
          • 示例

            // 设置 blue 的透明度
            #blue-div {background-color: rgba(0, 0, 255, 0.3);width: 100px;height: 100px;float: right;
            }
            // 改变 after 的内容长度
            <p id="after">This is another paragraph.</p>

            783575-20160527164133803-43208814.png

            观察发现,after 按照正常的文档流布局方式排列

            // 设置 after 的背景色
            #after {background-color: orange;
            }

            783575-20160527164142413-962840669.png

            观察发现,after 占据了整个屏幕宽度

        • 其后为浮动元素
          • 浮动元素后边的浮动元素,在空间允许的情况下会紧邻其左下或右下方显示(浮动方向相同)。
          • 示例

            <!DOCTYPE html>
            <html lang="en">
            <head><meta charset="UTF-8"><title></title><style>body {background-color: lightgray;}div {margin-right: 10px;}#red-div {background-color: red;width: 100px;height: 100px;float: right;}#blue-div {background-color: blue;width: 100px;height: 100px;float: right;}#green-div {background-color: green;width: 100px;height: 100px;float: right;}</style>
            </head>
            <body><div id="red-div"></div><div id="blue-div"></div><div id="green-div"></div>
            </html>

            783575-20160527164151038-471680080.png

            我们可以发现,浮动元素后的浮动元素,在空间充足的情况下会紧邻其左下或右下方显示(可以理解为从浮动方向起,向相反方向排布)。我们接下来看看空间不足的情况。

            // 设置 blue 的款的为 400px
            #blue-div {background-color: blue;width: 400px;height: 100px;float: right;
            }

            783575-20160527164159241-1208620361.png

            在空间不足的情况下,其后的元素会排列在下一行,且从浮动方向起,向相反方向排列。接下来我们设置不同的浮动方向。

            // 设置 green 左浮动
            #green-div {background-color: green;width: 100px;height: 100px;float: left;
            }

            783575-20160527164322803-2129016193.png

            设置 green 左浮动后,其会从其在文档流的当前高度开始左右浮动(其不会对其前方的元素造成影响)

    • 清除浮动
      • 大家都知道,浮动元素会对其后的元素造成影响。那么,总有些时候,我们是讨厌这些影响的,这就需要清除浮动的影响。

        clear: both/left/right;
      • 示例

        <!DOCTYPE html>
        <html lang="en">
        <head><meta charset="UTF-8"><title></title><style>body {background-color: lightgray;}div {margin-right: 10px;}#red-div {background-color: red;width: 100px;height: 100px;float: right;}#blue-div {background-color: blue;width: 400px;height: 100px;float: right;}#green-div {background-color: green;width: 100px;height: 100px;}</style>
        </head>
        <body><div id="red-div"></div><div id="blue-div"></div><div id="green-div"></div>
        </html>

        783575-20160527164335319-1912994164.png

        由图可知,green-div 显示到了 red-div 的左边,其主要是受到 red-div 右浮动的影响。怎么知道其是收到了 red-div 而不是 blue-div 的影响呢?

        // 改变 green-div 的宽度
        #green-div {background-color: green;width: 30px;height: 100px;
        }

        783575-20160527164344241-885668994.png

        观察发现,green-div 并没显示在 blue-div 的左边(blue-div 的左边足以容纳 green-div)。接下来我们看看清除浮动后的效果。

        // 清楚 green-div 的浮动
        #green-div {background-color: green;width: 30px;height: 100px;clear: both;
        }

        783575-20160527164353116-544677543.png

        清除 green-div 的浮动后,green-div 重新按照文档流默认的流式布局方式排布。

  • 浮动两列布局
    • 浮动的一个重要的应用是设置页面的 两列或三列 布局,我们通过示例看看如何使用浮动来实现页面的两列布局,及其注意事项。
    • 示例

      <!DOCTYPE html>
      <html lang="en">
      <head><meta charset="UTF-8"><title></title><style>body {background-color: lightgray;}#container {background-color: yellow;}#red-div {background-color: red;float: left;}#green-div {background-color: green;float: right;}</style>
      </head>
      <body><div id="container"><div id="red-div"></div><div id="green-div"></div></div>
      </html>

      我们先搭建页面的结构,但是在界面上,你什么都看不到。很明显,对于 div,它默认的尺寸是其内容的尺寸,你没有设置宽高,自然不会显示。

      // 设置 red-div 和 blue-div 的尺寸
      #red-div {background-color: red;width: 150px;height: 180px;float: left;
      }
      #green-div {background-color: green;width: 330px;height: 300px;float: right;
      }

      783575-20160527164409913-417602787.png

      如图,设置 red-div 和 blue-div 后,其确实显示出来了。但是我们设置的父包含块背景颜色却没有显示出来。这明显不符合上边的说法“对于 div,它默认的尺寸是其内容的尺寸”,这又是怎么一会事呢?先不管怎么回事,我们先把问题解决了。

      // 设置 container 的 overflow 属性为 hidden
      #container {background-color: yellow;overflow: hidden;
      }

      783575-20160527164419834-268453260.png

      如图所示,我们发现,背景图片显示出来了。但是原因是什么?原因是,当父包含块中的子元素设置了浮动时,而其本身没有设置浮动的情况器,其自身的高度就没法扩展(不能随着子元素的高度来改变自己的高度)。关于两列布局,及如何解决这个问题,还有其他的方案,在此我们不在叙述。有兴趣的朋友可以和我一起探讨。

控制一个元素的显示(Display)

我们知道,一个元素至少有两种显示状态:显示 / 隐藏。而 HTML 元素又分为块级元素和内联元素,我们通常需要改变一个 HTML 元素的具体的显示状态,来满足实际的需求。在此,我们就来看看如何通过 display 属性来控制一个 HTML 元素的显示状态。
  • 控制 隐藏 或 显示

    // 隐藏一个元素,元素默认显示
    display: none;

    使用 display 隐藏一个元素,被隐藏的元素不会再占据文档流的空间

    // 使用 visibility 属性隐藏一个元素
    visibility: hidden;

    使用 visibility 属性隐藏一个元素,被隐藏的元素会占据原有的文档流空间

  • 控制以 块级元素 或 内敛元素显示
    • 默认情况下

      <!DOCTYPE html>
      <html lang="en">
      <head><meta charset="UTF-8"><title></title><style>body {background-color: lightgray;}#red-div {background-color: red;width: 100px;height: 100px;}</style>
      </head>
      <body><p>This is a paragraph.</p><div id="red-div">This is a div.</div><span>This is another paragraph.</span>
      </html>

      783575-20160527164431678-1571731236.png

    • 使块级元素显示为内联元素

      // 使 red-div 显示为内联元素
      #red-div {background-color: red;width: 100px;height: 100px;display: inline;
      }

      783575-20160527164440288-1570849623.png

      观察发现 red-div 和 span 显示在了一行(块级元素默认会在其前后添加一个换行);且 red-div 设置的宽高也没有效果,这是必然的(只有块才有尺寸)。如果我们想让 red-div 显示在现在的位置,且可设置宽高,那么就让它显示为一个行内块级元素。

      #red-div {background-color: red;width: 100px;height: 100px;display: inline-block;
      }

      783575-20160527164449553-540646609.png

    • 使内联元素显示为块级元素

      // span 本身是一个内敛元素,设置它显示为块级元素
      span {display: block;
      }

      783575-20160527164500678-1760430672.png

      图示为设置 span 为块级元素后的效果,但是我们会发现,没有在其前边增加换行。

对齐方式

通常情况下,我们需要设置一个元素或元素内容的对齐方式,来美化我们的界面。对齐主要在两个方向上:水平和垂直
  • 元素
    • 左右对齐
      • 左右对齐
        • 使用 Absolute 定位实现左右对齐

          <!DOCTYPE html>
          <html lang="en">
          <head><meta charset="UTF-8"><title></title><style>body {background-color: lightgray;}#red-div {background-color: red;width: 100px;height: 100px;/*设置右对齐*/position: absolute;right: 0px;}</style>
          </head>
          <body><div id="red-div">This is a div.</div>
          </html>

          783575-20160527164510819-243797921.png

        • 使用 float 设置左右对齐

          #red-div {background-color: red;width: 100px;height: 100px;/*设置右对齐*/float: right;
          }

          783575-20160527164519522-1624854598.png

      • 中心对齐

        #red-div {background-color: red;width: 100px;height: 100px;/*设置居中对齐*/margin: 0px auto;
        }

        783575-20160527164528334-141025863.png

        需要注意的是,在使用 margin 来设置一个元素的居中对齐时,这个元素必须设置有宽度
    • 上下对齐(主要用于图文混排)
      • 设置垂直对齐

        vertical-align: top/middle/bottom;
      • 示例
        • 默认情况(顶部对齐)

          <!DOCTYPE html>
          <html lang="en">
          <head><meta charset="UTF-8"><title></title><style>body {background-color: lightgray;}#red-div {background-color: red;width: 100px;height: 100px;display: inline-block;}</style>
          </head>
          <body><div id="red-div">This is a div.</div><span>This is a paragraph.</span>
          </html>

          783575-20160527164538522-246766077.png

        • 设置垂直居中对齐

          #red-div {background-color: red;width: 100px;height: 100px;display: inline-block;vertical-align: middle;
          }

          783575-20160527164546616-1637793930.png

  • 内容(水平对齐
    • 使用 text-align 来设置文本内容的对齐方式

      <!DOCTYPE html>
      <html lang="en">
      <head><meta charset="UTF-8"><title></title><style>body {background-color: lightgray;}#red-div {background-color: red;width: 100px;height: 100px;text-align: center;}#content {background-color: yellow;width: 50px;height: 50px;}</style>
      </head>
      <body><div id="red-div"><div id="content">div</div></div>
      </html>

      783575-20160527164555225-1554650795.png

      我们发现,设置 text-align 后,red-div 的子孙元素的文本内容水平居中对齐了,其子元素 content 并没有居中对齐。我们再试没有办法像控制元素一样控制内容的垂直方向上的对齐方式。但是可以采用其他方案,如:边距、填充等

后记

实在是枯燥无味,不知你是否能坚持看到这里。关于 HTML 和 CSS 基础的介绍,到此就告一段落了。有关更多细节的东西,会在后续的博客中少有涉及。接下来,会介绍 JavaScript 的基础。本目前在从事 iOS 和 web 开发工作,处于小妖修炼阶段,很希望与大家交流,共同进步。

转载于:https://www.cnblogs.com/theDesertIslandOutOfTheWorld/p/5535202.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/490640.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

量子纠缠为什么不能用于瞬时通讯?

来源&#xff1a;数学职业家什么是信息&#xff1f; 信息的一个比较被认可的定义是1948年数学家香农在论文中提出的&#xff1a;信息是用来消除随机不定性的东西。比如&#xff0c;盒子里有一个硬币&#xff0c;它可以是正面向上&#xff0c;也可以是反面向上&#xff0c;在打开…

第二次冲刺每日站立会议03

会议照片&#xff1a; 会议内容&#xff1a; 祖浩然&#xff1a; 昨天&#xff1a;学习要进行优化的相关知识 今天&#xff1a;对前两个界面进行界面的修改 遇到的问题&#xff1a;设置背景图片之后按钮无法显示 刘洋&#xff1a; 昨天&#xff1a;学习要进行优化的相关知识 今…

cad菜单栏快捷键_天正建筑菜单栏不见了怎么调出来

在使用天正建筑得出时候&#xff0c;可能会因为不小心&#xff0c;把菜单栏关闭了&#xff0c;却一时不知道怎样打开&#xff0c;下面使用三种方式&#xff0c;教你将不见了的菜单栏调出来。方法一&#xff1a;使用键盘快捷键1.在界面中&#xff0c;我们可以看到&#xff0c;这…

图说报告 | “智能+”的终极版图:数字孪生世界

来源&#xff1a;阿里研究院数字孪生&#xff08;Digital Twin&#xff09;是近几年兴起的非常前沿的新技术&#xff0c;进入Gartner2019年十大战略技术趋势行列。今天&#xff0c;从300万个波音777零部件到人类心脏&#xff0c;其数字孪生体都可以复制。在未来的医疗领域&…

MATLAB画频率响应曲线(幅频特性和相频特性)并将横坐标转换为赫兹hz单位

matlab画频率响应曲线的函数为&#xff1a; [h,w] freqz(b,a,n) b,a&#xff1a;传递函数系数 h&#xff1a;频率响应 w&#xff1a;角频率&#xff0c;0~π 更多参数解释参考官方链接https://ww2.mathworks.cn/help/signal/ref/freqz.html?requesteddomaintrue 用freqz…

python3.6配置环境变量_python安裝及环境变量配置

一、安装 1.python下载 进入官网后选择download&#xff0c;选择windows进入如下页面1.1 python3.6.6版本下载 首先我们下载python3.6.6版本&#xff0c;下滑页面找到此位置&#xff0c;64位系统选择红色框框&#xff0c;32位选择蓝色框框点击进行下载 1.2 python2.7版本下载 下…

人与动物之间有没有一条不可逾越的鸿沟?——从基础存在论到生命哲学

来源&#xff1a;《哲学动态》 2018年第12期作者&#xff1a;舒红跃&#xff08;湖北大学哲学学院&#xff09;张哲&#xff08;湖北省道德与文明研究中心&#xff09;海德格尔《存在与时间》中对“此在”的生存论刻画是哲学史中的经典&#xff0c;此在“在-世界中-存在”是存在…

matlab显示曲线图中某个点的坐标值

在画好一幅曲线图后&#xff0c;有时候我们需要找出某个坐标的点&#xff0c;可以通过打开数据游标功能&#xff0c;此时鼠标点击的位置就会显示出坐标值&#xff0c;如下图&#xff1a; 此时保存下来的图也会带有显示的坐标值。 如果需要显示多个坐标的值&#xff0c;按住alt…

数字滤波器的差分方程和传递函数

差分方程用于描述线性、时不变、因果滤波器 数字滤波器的差分方程表示为&#xff1a; 对应的系统函数/传递函数为&#xff1a; a_k&#xff0c;b_k为滤波器系数 当a_k0时&#xff0c;滤波器当前的输出仅依赖于输入&#xff0c;而不依赖过去的输出&#xff0c;称为非递归滤波器…

2019年AI实力对决:美国领跑,中国追赶,欧盟弱势

来源&#xff1a; 智东西&#xff0c;Data Innovation美国当地时间8月18日&#xff0c;美国数据创新中心&#xff08;Center for Data Innovation&#xff09;发布针对中国、美国和欧洲三大地区的人工智能发展报告&#xff0c;报告显示&#xff0c;目前美国在AI发展中仍然保持领…

谷歌学术搜索技巧:查找一个句子的某个空应该用什么词

在写论文的时候经常遇到某个地方不知道应该用什么词比较专业的问题&#xff0c;举个例子&#xff1a; we used training strategy * in literature [10] *号处应该填什么词比较专业呢 这时可以在谷歌学术找到答案 在谷歌学术搜索中输入&#xff1a; "training strate…

关于未来的蝴蝶效应,《崛起的超级智能》创作有感

来源&#xff1a;刘锋科学网博客前言&#xff1a;2019年7月5日&#xff0c;当我拿到出版社寄出的《崛起的超级智能&#xff1a;互联网大脑如何影响科技未来》时&#xff0c;仿佛在捧着一个刚出生的婴儿。不是十月怀胎&#xff0c;而是历经12年的孕育&#xff0c;2年多的艰苦生产…

LaTeX表格字太贴近上面表线

如图所示&#xff0c;默认情况下有时候会出现表格中的字太贴近上面表线的问题&#xff1a; 解决方法&#xff1a;在\begin{tabular}{c|cc|cc|cc}命令前面加一句\renewcommand{\arraystretch}{1.5} 效果如图&#xff1a; \renewcommand{\arraystretch}{number}命令可以调整表线和…

造出世界最大芯片的公司,Cerebras Systems到底是怎样的存在?

来源&#xff1a;TechSugar最近&#xff0c;一颗巨型芯片的诞生引爆了芯片圈。其面积42225 平方毫米&#xff0c;拥有1.2 万亿个晶体管&#xff0c;400000 个核心&#xff0c;片上内存18G字节&#xff0c;内存带宽19PByte/s&#xff0c;fabric带宽100Pbit/s。是目前芯片面积最大…

python函数type的用意_python中type()是什么意思

type()是一个内建的获取变量类型的函数。 type()函数有两个用法&#xff0c;当只有一个参数的时候&#xff0c;返回对象的类型。当有三个参数的时候返回一个类对象。 语法&#xff1a;type(object) type(name, bases, dict) 具体用法&#xff1a; 一个参数type(object) 返回一个…

西方哲学史中49位哲学家的核心思想

来源&#xff1a;哲学与艺术泰勒斯——水是万物的始基这一命题开创了人类认识的一个新时代&#xff0c;拉开了从哲学的角度审视世界的大幕。阿那克西曼德——世界源于无定阿那克西曼德生于米利都&#xff0c;是泰勒斯的追随者和最出色的学生。阿那克西米尼——世界源于无限的空…

python实战项目书 题库系统_Python实战视频教程_基于Python项目与面试题实例讲解(进阶训练篇)...

课程介绍&#xff1a; 精选50个Python项目实战与面试容易遇到的问题作为训练任务&#xff0c;每个任务都先提出问题&#xff0c;分析问题、然后给出巧妙与高效的解决办法&#xff0c;最后手把手代码实战完成任务&#xff0c;带你全面提升python项目实战核心技能与高效编程技巧.…

发表了一篇英文长文:语义信息G理论和逻辑贝叶斯推理for统计学习

来源&#xff1a;人机与认知实验室【本文是鲁晨光老师发表的一篇关于语义信息论和统计学习的论文写后感&#xff0c;发表在科学网上&#xff0c;特摘录推荐】2019-8-21 01:04 |个人分类:信息的数学和哲学|系统分类:论文交流| 信息论, 语义信息, 机器学习, 归纳, 科学哲学这是我…

win10下安装和卸载Ubuntu双系统

记录一下我装Ubuntu的过程&#xff0c;可能这不是最详细和最好的教程 首先下载diskgenius软件进行磁盘分区https://www.diskgenius.cn/ 在C盘下分出500M用于安装Ubuntu的启动项 在D盘下分出100G&#xff08;根据个人需要&#xff09;用于安装Ubuntu 之后对分出的区进行删除卷操…

2019年美国国家人工智能战略报告(中文翻译版)

来源&#xff1a;网络大数据人工智能(AI)拥有巨大的希望&#xff0c;几乎可以使社会的各个方面受益&#xff0c;包括经济&#xff0c;医疗保健&#xff0c; 安全&#xff0c;法律&#xff0c;运输&#xff0c;甚至技术本身。2019年2月11日&#xff0c;总统签署了行政命令13859…