整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

CSS布局入门,小白的福利 网友:已收藏

CSS布局入门,小白的福利 网友:已收藏

过去的几年中,CSS布局以及我们开发网站前端的方式发生了巨大变化。现在,在CSS用于开发站点的布局方法方面,我们有了真正的选择,这意味着我们经常需要选择采用哪种方法。在本文中,我将通过解释如何使用它们以及如何使用它们的基础知识,介绍您可以使用的各种布局方法。

结构化文档以利用常规流程

通过确保文档以结构良好的方式开始,您可以利用正常的流程。想象一下,如果不是浏览器这种正常流动的概念,而是浏览器将所有盒子堆叠在彼此的角上,直到创建布局。那意味着您将必须将所有单个内容放置在页面上。而是,浏览器以立即可读的方式显示我们的内容。

如果您的CSS无法加载,则用户仍然可以阅读内容,而完全不获取CSS的用户(例如,使用屏幕阅读器的用户)将按照文档中的顺序将内容交付给他们。从可访问性的角度来看,使HTML文档井井有条地开始生活至关重要。但是,这也将使您作为Web开发人员的生活更加轻松。如果您的内容符合用户希望阅读的顺序,则无需对布局进行大量更改即可将其放置在正确的位置。使用更新的布局方法,您可能会惊讶于您要做的事很少。

因此,在考虑布局之前,请考虑文档结构和您希望从文档顶部到底部阅读内容的顺序。

远离正常流量

有了结构合理的文档后,我们需要决定如何采用该文档并将其转换为所需的布局。对于我们文档的某些部分,这将涉及偏离正常流程。我们有整套的布局方法可供使用。我们将要研究的第一种方法是float,因为浮点数很好地说明了从正常流中取出元素的含义。

浮点数

浮动框用于将框向左或向右移动,以使内容围绕它显示。

为了浮动项目,请使用CSS属性float和一个left或right值。float的默认值为none。

值得注意的是,当您浮动一个项目并用文本环绕时,会缩短该内容的行框。如果您浮动某个项目,并且以下包含您的文本的框应用了背景色,则可以看到该背景色将在该浮动项下运行。

在缩短行框以在浮动文本和自动换行文本之间留出空间时,必须在浮动项目上设置边距。文本上的边距只是将文本从容器的边缘移入。对于向左浮动的图像,假设您希望图像与容器的顶部和左侧齐平,则应在右侧和底部添加边距。

内容的背景色在浮动下运行

清算浮动

浮动元素后,以下所有元素将环绕该浮动元素,直到它们包裹在下面,并且正常流程继续进行。如果要防止这种情况,则需要清除浮点数。

在要在浮动之后开始显示的元素上,添加clear值为left 的属性以指示清除向左浮动的项目,向右以清除向右浮动的项目,或同时清除所有浮动。

如果希望元素在浮点后开始,则上述方法有效。如果您发现自己的状态是盒子里有一个漂浮的物品,并且旁边有一些文字,那将无济于事。如果文本比浮动项目短,则将在内容下方绘制该框,而忽略浮动项目。正如我们已经了解的那样,浮点数会缩短线框,其余的布局将继续正常流动。

为了防止这种情况,我们需要清除包装箱内的东西。我们可以添加一个空元素并将其设置为清除所有元素。这涉及将空div粘贴到我们的文档中,这并不理想,如果您的页面是由CMS生成的,则可能无法实现。因此,典型的清除浮动方法是所谓的清除修补程序。此方法通过添加CSS生成的内容并将其设置为清除两者来起作用。

块格式化上下文

清除框内浮点数的另一种方法是在容器上调用块格式化上下文(BFC)。块格式上下文包含其中的所有内容,其中将包括无法再戳出框底部的浮动项目。有几种强制BFC的方法,清除浮点数时最常见的方法是将溢出属性设置为具有默认可见值以外的值。

以这种方式使用溢出通常会起作用,但是,在某些情况下,您最终可能会在项目上留下阴影或不必要的滚动条。在样式表中看起来也有些混乱:您是否设置了溢出是因为需要滚动条还是只是为了获得这种清除功能?

为了使意图更清晰并防止创建BFC引起不必要的副作用,可以将其flow-root用作该display属性的值。唯一要做的display: flow-root就是创建一个BFC,从而清除浮标而不会引起其他问题。

浮点数的旧用法

在使用较新的布局方法来创建列布局之前,浮动技术一直通过为一组项目提供一定的宽度并将它们设置为彼此相邻浮动来起作用。仔细管理这些浮动框的百分比大小可能会产生网格效果。

我不建议立即开始新设计并使用此方法。但是,它将在现有站点中保留很多年。因此,如果遇到几乎所有东西都漂浮的设计,那么这就是使用的技术。

定位

要从普通流中删除元素或将其从普通流中的位置移开,可以使用positionCSS中的属性。正常流动时,元素position的static。这些项目在“块”维度中一个接一个地显示,如果滚动页面,它们也会随之滚动。

更改位置值时,通常还会使用偏移值将框从特定参考点移开。使用的参考点取决于您使用的位置值。

相对定位

如果项目具有position: relative参考点,则该参考点通常是正常流动的地方。然后,您可以使用偏移的属性值top,left,bottom和right移动从那里通常会显示框。

请注意,页面上的其他项目不会响应元素的新位置。保留了它在正常流程中的位置,因此您需要自己管理所有重叠部分。

绝对定位

设置position: absolute的一个项目,它完全从正常流程中移除。剩下的空间将被删除。然后,将相对于其包含的块定位该项目,除非将其嵌套在另一个定位的元素内,否则它将为视口。

因此,如果position: absolute在项目上进行设置,将会发生的第一件事是,它通常最终会卡在视口的顶部和左侧。然后,您可以使用偏移的属性值top,left,bottom并right从该位置移动框,你希望它是。

通常,您不希望根据视口放置盒子,但是在引用包含元素时,它位于内部。在这种情况下,您需要为包含该元素的位置赋予默认静态值以外的位置值。

由于设置position: relative不会从正常流程中删除该项目,因此这是通常的选择。给您希望设置偏移的父元素,position: relative然后从该元素的边界偏移绝对定位的块。

固定定位

position: fixed在大多数情况下,带有的东西将相对于视口放置,并从文档流中删除,因此不会为其保留任何空间。滚动页面时,固定元素将相对于视口保持在适当的位置,因为正常流中的其余内容照常滚动。

这有助于启用固定的导航面板,该面板在屏幕上(例如,在内容滚动时)保持在屏幕上。与其他定位值一样,这样做可能会导致重叠,因此应注意所有内容都可以读取并且不会以固定项目结尾。

文是“小网站”系列的第 4 篇。本系列介绍一些作者主观认为值得把玩的“小网站”,愿朋友们多少都能有所收获。这个系列会长期更新,对这个系列感兴趣的朋友可关注,不迷路。

--- 今日介绍 ---

大海环境“白噪音” (VirtOcean)

把玩点:

  • 适合减压;
  • 适合午休、阳台晒太阳;
  • 睡不着时可催眠;
  • 适合专心办公;
  • 技术拟真特效的样板;

地址 https://virtocean.com

主观评价:趣味性 3.5 星,技术性 4 星


--- 使用指北 ---

还有白噪音这么个东西?什么是白噪音?

白噪音是一种比较友好的噪音,它是一种频率相对来说很均匀的声音,人能接受,所以大多数人听上去感觉还很和谐。

大自然中的很多声音都可以称之为白噪音,如风吹树叶沙沙声、雨天雨水滴答声、大海潮起潮落声、沙滩行走声、轮船汽笛声、海浪拍打岩石的声音、鸟鸣鸟叫的声音等等....

今天介绍的VirtOcean就是属于白噪音“小网站”,囊括一切与大海相关的环境音。网站支持电脑与手机端,不过在电脑上表现的要比手机上更优秀,手机上有兼容性的小问题。

电脑上打开网站,映入眼帘的是一片逼真的大海,太逼真了,比3A游戏还要逼真,感觉跟现实中的海水一样。当然,如果电脑太慢的朋友会觉得有点卡,因为使用了与3D相关的技术。

使用主界面

界面顶部右上角的开关支持白天、黑夜两种模式。

黑夜白天模式开关

下面一排菜单中“Mute SFX”是静音、“Full DSP”是界面全屏,“Hide UI”是隐藏操作界面,让你好好的享受大海的。如果点了隐藏操作界面不知道如何还原,试试左下角的SHOW UI。

功能菜单

网站打开默认是没有声音的,打开音箱或者戴上耳机,点击界面上图标就能听到声音了,都有哪些声音呢:

  • Calming sea : 相对平和一些的海水声音
  • Peaceful ocean : 正常的海洋中海浪的声音
  • Rough storm : 暴风雨般海水拍打的声音
  • Rowing a boat : 划小船的声音
  • Boat mast : 帆船的声音
  • Seagulls : 海鸥海鸟的声音
  • Dolphins : 海豚的声音
  • Sailboat interior : 船舱内部的声音
  • Distant foghorn : 远远的大轮船的声音
  • Walking on a beach : 光脚走在沙滩小石籽的声音
  • Underwater diving : 潜水的声音
  • Submarine ambiance : 海面下环境音
  • Buoy bells : 海上浮标声音
  • Motor boat trip : 海上轻快摩托艇的声音
  • On the land : 海边陆地上鸟、苍蝇、动物的环境音

不同类型声音支持多个组合播放,作者通常选择Calming sea 加上 Submarine ambiance 一起组合播放,戴上低音耳机,闭上眼睛,晒着窗外的太阳,躺在椅子上,非常享受且慵懒的睡个午觉。

选择个舒服的姿势,快来一起享受吧!


--- 干货知识 ---

本小节属于技术解析环节,纯技术性干货,适合技术人员,非行业人士可忽略。

网站虽然很简单,实现技术不简约:

  • 非常逼真的水环境;
  • 潮起潮落;
  • 磨砂玻璃般的选择界面;
  • 逼真的声音;
  • 多声音播放;

先看声音,经分析,声音是由一些WAV文件组件,声音来源于https://freesound.org 这个网站,很多声音是免费的,可以下载,前提是要有一个账号。

有了声音就要播放,播放的组件来源于一款jQuery的插件,jquery.jplayer.min.js,该插件支持mp3,mp4,ogg,webm,wav,rtmp,flv的播放,操作非常简单,不多赘述。

磨砂玻璃的效果,来源开源代码 https://codepen.io/TurkAysenur/pen/ZEpxeYm ,前端的同学可以自行研究实现原理。

重头戏是大海的模拟,网站的作者采用的是一款开放源代码的实现,名称叫2050,实现地址 https://codepen.io/xorxor_hu/pen/mOWbVG

真正的技术就藏在上述2050项目的JS代码中,实现采用的是three.js框架,它在互联网圈可是鼎鼎有名呢,大到3D游戏,中到三维仿真(物联网、BIM大屏、数字孪生)场景,小到我们介绍的小网站,但凡网页上用到三维的东西,都离不开它。

讲到three.js就不得不提OpenGL和WebGL了。OpenGL是一个跨平台的3D/2D的绘图规范,它是“爷爷”,后来有了在网页上显示3D的需求,怎么办?WebGL协议就出来了,它允许你把JavaScript+OpenGL结合一起玩,不过用WebGL原生的API写程序太复杂,要的数学知识也挺多的,于是three.js出来了,它对WebGL的原始API进行了大量封装,让你极大的提高开发效率,降低学习成本。先前大家喜欢玩的微信跳一跳也是基于three.js开发的哟!

three.js涉及到相当多的3D相关知识点:摄像机、场景、渲染器、材质、灯光、贴图、烘焙、光照、法线、物体、动画、天空盒等...有兴趣的同学可以找些书来深入研究,会这个了,计算机中的3D的世界就被你拿下了...

本系列长期更新!

喜欢的朋友,感谢点赞、分享、收藏三连!

、小白剧场

大东:小白,你对地震检测了解多少?
小白:我不是地质专业的,是网络空间安全专业的,这个学科跨度太大了,基本不怎么了解,唯一一点的了解是张衡发明了地动仪,哈哈!大东你给我讲讲吧。
大东:中国地震局检测中心听说过吧。国家地震科学数据共享中心设在中国地震台网中心,是地震科学数据共享工程的主体和核心,承担地震科学数据共享服务技术体系的构建和主体数据库的整合与改造。专业数据共享分中心设在各研究所,承担专业数据资源的整合与改造,以及专业数据的共享发布与服务。省级数据节点是国家地震科学数据共享中心的主要数据源。
小白:大东,你怎么突然提到地震检测了,这个和网络安全有什么关系吗?
大东:小白,还真就猜对了,这个和国家安全的关系非常大。
小白:这个怎么说?
二、话说事件
大东:最近热点网络安全事件“关于我国某地震监测中心遭到网络攻击”你听说了吗?
小白:啊,这个事件我还真不知道呢,大东仔细讲讲吧。
大东:日前,我国某地震监测中心的部分网络设备被植入木马病毒,初步判定这一事件为境外具有政府背景的黑客组织和不法分子发起的网络攻击行为。

木马攻击(图片来源:网络)
小白:又是境外!这是去年西北工业大学遭受网络攻击后又一具体案例了吧。
大东:对!小白说的没错,经监测发现,其所属地震监测中心部分地震速报数据前端台站采集点网络设备遭受境外组织的网络攻击。
小白:数据泄露,不对啊,我刚才都能在网站上找到地震数据,这些数据不是公开的吗?
大东:是的,很多地震数据都是公开的,但地震数据关乎国家安全。
小白:地震数据和国家安全,这个有什么关系呢?
大东:地震波穿过的地下介质、结构不同时会产生波速的变化。而获取地震监测中心的相关数据可以推导出某一区域的地下结构和岩性。例如推测地下是否有大型的空洞,进而推测它是否是军事基地或者指挥所。
小白:啊,虽然不明这些专业知识,但是地震数据能推测军事基地,这也太可怕了。
大东:这背后的技术逻辑就是异常行为发现。其实早在2021年的BlackHat Asia大会上,以色列的研究人员将连接在望远镜上的光学传感器指向待窃听房间的一个闪亮的物体,如铝垃圾桶、金属魔方等,他们可以检测到物体表面上的可见振动,从而使它们能够发出声音,进而能够窃听到房间内的讲话。
小白:东哥这个事情好像我们以前解读过。感兴趣的读者可以回顾一下:百叶窗真的能隔绝隐私吗?——Black Hat Asia大会上的新型窃听技术丨大东话安全

BlackHat Asia 2021海报(图片来自网络)

三、大话始末
大东:其实如果对相应场景展开推演和预测,就能发现数字安全的未来发展规律和脉络。
小白:异常行为发现领域?
大东:不只局限于这个领域。在千行百业数字化转型的过程中,其实会衍生出越来越多的流程和场景,那么在这些新增的流程和场景中,自然也会暴露出越来越多以前我们没有遇到过的安全问题。
小白:比如,什么样的数字化场景呢?
大东:海洋牧场你听说过吗?
小白:牧场不是应该在草原吗,怎么跑到海洋呢?
大东:海洋牧场就是利用数字化手段,引入先进的信息技术来实现智能化管理和可持续发展。
小白:这听起来真不错!我记得以前水产养殖领域主要是靠生态学原理和管理模式来养殖水生生物的,现在数字化转型会带来哪些变化、新增哪些流程呢?
大东:数字化转型当然要布设观测站,联合卫星、飞机、水面浮标和水下潜水器等工具,建立立体观测系统,实时监测海洋牧场的环境和生物状况。这样可以更精确地评估环境和资源质量,实现针对性的调整,提高生态效益。
小白:那么这里面暗藏的数字安全可能会面临什么风险和挑战呢?
大东:海洋牧场数字化转型虽然有很多好处,但也会引发一些风险。恶意黑客可能会试图入侵工业控制系统,数据和状态监测系统等,篡改PLC的重要状态数据,或直接利用电磁信号构建侧信道攻击,导致仪器设备的损坏乃至战略决策的失误。
小白:明白,可能产生其他风险吗?
大东:当然,数字化设备的互联可能会暴露更多的攻击面,比如对水下机器人进行控制或干扰。未来的水下机器人如果是AI驱动的,那就会产生“意识攻击”,形成AI与AI之间的对抗网络,这后果不堪设想。
小白:这么严重!那真的需要高度的网络安全保障措施。不过,除了海洋牧场中蕴含的工控安全场景,其实还有一些其他领域也会面临数字安全挑战,比如区块链安全等。
大东:你提得对!区块链安全是关于保护区块链系统免受攻击和篡改的问题,它涉及到密码学和分布式系统的保护,就会首先面临“51%攻击”的加剧风险。因为区块链的安全依赖于多数节点的诚实行为,如果恶意参与者控制了网络上超过51%的算力,他们就有可能篡改交易记录,这对整个区块链系统的安全性构成威胁。
小白:那确实是个问题。
大东:总之,数字安全场景将随时面临挑战和风险。我们需要不断提升数字场景的安全性,融合其各自特征,夯实安全基础、加固安全措施。数字安全建设任重道远。
四、小白内心说
小白:东哥今天的讲解给了我很大启发。随着传统行业的不断数字化,以及千行百业的深度数字化融合进程的推进,数字安全问题不再局限于特定领域。无论是金融、医疗、制造,还是农业、海洋等领域,都需要构建强有力的数字安全韧性能力屏障,以保护关键数据和系统免受威胁。我们需要站在更宏观的层面来统筹考虑数字安全问题,避免陷入“只见树木不见森林”的误区。

参考资

1. 国家地震科学数据中心https://baike.baidu.com/item/%E5%9B%BD%E5%AE%B6%E5%9C%B0%E9%9C%87%E7%A7%91%E5%AD%A6%E6%95%B0%E6%8D%AE%E4%B8%AD%E5%BF%83/23563408
2. 武汉地震监测中心遭境外木马攻击https://finance.sina.com.cn/tech/roll/2023-07-28/doc-imzefkcz7993803.shtml
3. 美国为何会攻击中国的地震监测中心?https://mp.weixin.qq.com/s/JUwWKazzBVLD2yyETiTkUQ

4. 国家地震科学数据中心官网https://data.earthquake.cn/index.html

来源:中国科学院信息工程研究所