学前端到了CSS阶段,你一定要掌握这9大防御式开发技能

scrollbar-gutter-explainer:“ scrollbar-gutter” CSS属性的解释器 解释器: scrollbar-gutter CSS属性 内容: 作者 参加 介绍 scrollbar-gutter CSS属性(在定义)可控制scrollbar-gutter的存在(可以保留用于显示滚动条的空间)。 这使Web作者在其布局如何与浏览器提供的滚动条交互方面更具代理权,因此他们可以例如防止内容扩展时布局发生过多更改,同时在不需要滚动时避免不必要的视觉效果。 请注意,滚动条本身的存在是由overflow属性确定的,是否使用经典滚动条或覆盖滚动条的决定取决于用户代理。 背景 滚动条装订线是内部边框边缘和外部填充边缘之间的空间,用户代理可以在其中显示滚动条。 “经典”滚动条始终放置在装订线中,存在时会占用空间,并且通常不透明。 “覆盖”滚动条放置在内容上方,而不是位于装订线中,并且通常是部分透明的。 它们的外观可能取决于用户是否以及如何与其交互。 用户代理确定使用经典滚动条 立即下载

一、什么是防御式编程

防御性编程是一种细致、谨慎的编程方法(习惯)。我们在写代码时常会有“以防万一”的心态,把以防万一有可能出现的情况提前考虑进去,规避以免以防万一出现带来的问题。

应用防御性编程技术,你可以侦测到可能被忽略的错误,防止可能会导致灾难性后果的“小毛病”的出现,在时间的运行过程中为你节约大量的调试时间。

比如我们在写下面这个效果时,如果只是按设计师设计效果来开发,我们就不会考虑标题内容过长的问题。但是在实际的应用中,数据是从后台加载而来,标题的字数就有可能过长,过长之后就会导致标题溢出折行的效果如下图,带来不好的体验。

如果站在防御式编程的角度来思考,那我们就会提前把这种问题规避掉。如果标题过长,我们可以使用...省略号来处理。而不是等到项目上线,实际问题发生时,再来修改代码。

二、防御式CSS

防御式CSS是一个片段的集合,可以帮助我们规避“以防万一”产生的问题。

我们在CSS布局时,是按照设计师的效果来开发的,但是实际的网页内容是动态的,网页上的内容是可以改变的,如:文字数量,图片尺寸、窗口大小等,再加上用户的一些意想不到的行为和运行环境,从而造成CSS布局的效果并没有按照我们预期的效果显示。

我们可以通过添加某些CSS代码,来避免这种情况带来的问题。防御式CSS是实现项目稳定性建设重要但极其容易忽视的一环。

接下来我们分享9个应用场景下,具有防御式的CSS代码。

三、9个具有防御式的CSS代码

① :场景一:单行文本过长

我们设计时的理想效果是标题文字不超过8个字,正好显示完整。但实际应用时,有可能标题内容过长造成换行显示。我们可以添加文字溢出显示..省略号来解决。

<style>
   body,
   h3 {
       margin: 0;
       padding: 0;
  }
   .box {
       width: 150px;
       height: 150px;
       position: relative;
       margin: 40px auto;
  }
   .box h3 {
       height: 30px;
       line-height: 30px;
       font-weight: 100;
       width: 100%;
       background-color: rgba(0, 0, 0, 0.5);
       font-size: 16px;
       color: #fff;
       position: absolute;
       bottom: 0;
       text-align: center;
       /*以防万一,标题过长时,用...省略号显示*/
       white-space: nowrap;
       overflow: hidden;
       text-overflow: ellipsis;
  }
</style>
<body>
   <div class="box">
       <img src="images/flex-06.jpg" alt="" />
       <h3>"以防万一"标题过长产生的问题</h3>
   </div>
</body>

2、场景二:类别标签中文本过长

在这个效果中,我们并不希望标签延伸到最右侧,我们希望内容过长时,可以在一定的长度时就折行显示。我们可以通过添 max-width属性来避免这种“以防万一”的问题。

同类的应用还有 min-width,在此就不演示了

<style>
     .box {
       width: 250px;
       height: 250px;
       position: relative;
    }
     .box span {
       position: absolute;
       background-color: rgba(119, 245, 197, 0.8);
       line-height: 1.3;
       font-size: 12px;
       padding: 5px 10px;
       border-radius: 0 50px 50px 0px;
       left: 0px;
       top: 5px;
       /*以防万一标签内容过长,控制最大宽度,内容过多折行显示*/
       max-width: 70%;
    }
   </style>
 </head>
 <body>
   <div class="box">
     <img src="images/ms.jpg" alt="" />
     <span>植物奶油 巧克力 草莓 榴莲 花生 芝麻 小米 鸡蛋</span>
   </div>
 </body>

3、场景三:防止图片拉伸或挤压

我们预想的是用户按1:1的大小来上传头像图片,但实际用户上传的头像比例是五花八门,就会造成图片被拉伸或挤压变形。我们可以添加Object-fit:cover来等比例裁剪图片尺寸,这样图片就不会被拉伸或压缩,不过会有一部分图片被裁剪掉。

<style>
   .box {
       width: 200px;
       height: 200px;
       border-radius: 50%;
       overflow: hidden;
  }
   .box img {
       width: 100%;
       height: 100%;
       /*保持图片原有尺寸来裁剪*/
       object-fit: cover;
  }
</style>
<body>
   <div class="box">
       <img src="images/tx2.png" alt="" />
   </div>
</body>

4、场景四:图片加载失败,文字显示问题

当图片上有文字时,如果图片加载失败,而外层容器的背景色和文字颜色接近,那么文字的展示效果就不理想;此时我们可以给图片加上对应的背景色。

这个效果大家只需做个了解就好。通常如果图片上有文字,设计师在设计效果图时都会在图片和文字中间加上一层黑色的半透明遮罩层,这样即使图片加载不出来,也不影响文字的展示效果。

<style>
   .box {
       width: 250px;
       height: 156px;
       position: relative;
  }
   .box img {
       width: 100%;
       height: 100%;
       object-fit: cover;
       /*"以防万一"图片加载失败,加上背景色,保证文字能正常显示*/
       background-color: #666;
  }
   .box h3 {
       width: 100%;
       font-size: 20px;
       text-align: center;
       position: absolute;
       top: 40px;
       color: #fff;
  }
</style>
<body>
   <div class="box">
       <img src="images/rotate3.webp" alt="" />
       <h3>美丽的风景图</h3>
   </div>
</body>

5、场景五:必要时显示滚动条

在内容比较长的情况下,可以通过设置 overflow-y控制滚动条是否展示。但是这里更推荐将overflow-y的值设置为 auto。如果你将overflow-y显式设置为 scroll时,不管容器内容长短,滚动条都会展示出来,这种体验是不好的

<style>
     .box {
       width: 160px;
       padding: 20px;
       height: 200px;
       background-color: skyblue;
       line-height: 2;
       border-radius: 20px;
    }
     .box .content {
       padding-right: 10px;
       max-height: 100%;
       /*以防万一,用户内容不足时,不需要显示滚动条,只有内容溢出时才显示*/
       overflow-y: auto;
    }
    /* 整个滚动条*/
     .content::-webkit-scrollbar {
       width: 5px;
       padding: 0px 20px;
    }
    /* 滚动条轨道*/
     .content::-webkit-scrollbar-track {
       border-radius: 10px;
       background-color: #000;
       margin: 20px 0px;
    }
    /*滚动条上的滚动滑块*/
     .content::-webkit-scrollbar-thumb {
       width: 14px;
       border-radius: 10px;
       background-color: #ddd;
    }
   </style>
 <body>
   <div class="box">
     <div class="content">
      在内容比较长的情况下,可以通过设置
      overflow-y控制滚动条是否展示。但是这里更推荐将
     </div>
   </div>
 </body>

6、场景六:预留滚动条空间,避免重排

当内容不足时不会出现滚动条,文字占据的宽度要宽些。当内容溢出出现滚动条时,因为滚动条要占据一部分空间,则会造成文字占据的空间变窄,因而会造成重排。我们可以元素添加scrollbar-gutter:stable;来避免这个问题。

scrollbar-gutter属性有三个值

属性值

描述

auto

就是默认表现。没有滚动条的时候,内容尽可能占据宽度,有了滚动条,可用宽度减小

stable

如果 overflow 属性计算值不是 visible,则提前预留好空白区域,这样滚动条出现的时候,整个结构和布局都是稳定的。

both-edges

让容器左右两侧同时预留好空白区域,目的是让局部绝对居中对称。

没有加scrollbar-gutter时,未出现滚动条和出现滚动条之间的差别

加上scrollbar-gutter:stable;后,出现滚动条和没有出现滚动,前后文字显示效果没有差异

<style>
   .box {
       width: 160px;
       padding: 20px;
       height: 200px;
       background-color: skyblue;
       line-height: 2;
       border-radius: 20px;
  }
   .box .content {
       max-height: 100%;
       /*以防万一,用户内容不足时,不需要显示滚动条,只有内容溢出时才显示*/
       overflow-y: auto;
       /*预留好滚动条位置,必免引起重排*/
       scrollbar-gutter: stable;
  }
   .content::-webkit-scrollbar {
       width: 10px;
  }
   .content::-webkit-scrollbar-track {
       border-radius: 10px;
       background-color: #000;
       margin: 20px 0px;
  }
   .content::-webkit-scrollbar-thumb {
       width: 14px;
       border-radius: 10px;
       background-color: #ddd;
  }
</style>
<body>
   <div class="box">
       <div class="content">
          当内容不足时不会出现滚动条,文字占据的宽度要宽些。当内容溢出出现滚动条时,因为滚动条要占据一部分空间,则会造成文字占据的空间变窄,因而会造成重排。
       </div>
   </div>
</body>

7、场景七:锁定滚动链

我们会发现当子元素滚动到顶部或底部继续滚动滚轮时,会导致父元素的滚动,但这种行为有时会影响页面体验。在子元素上应用overscroll-behavior: contain就可以禁止掉这一行为。

<style>
   body {
       height: 2000px;
  }
   .box {
       height: 400px;
       width: 200px;
       margin: 0px auto;
       overflow-y: auto;
       background-color: skyblue;
       /*当滚动到滚动条底部和顶部时,会触发父元素的滚动条滚动*/
       overscroll-behavior-y: contain;
  }
</style>
<body>
   <div class="box">
       <p>1</p>
       <p>2</p>
       <p>3</p>
       <p>4</p>
       <p>5</p>
       <p>6</p>
       <p>7</p>
       <p>8</p>
       <p>9</p>
       <p>10</p>
       <p>11</p>
       <p>12</p>
       <p>13</p>
       <p>14</p>
       <p>15</p>
       <p>16</p>
       <p>17</p>
       <p>18</p>
       <p>19</p>
       <p>20</p>
       <p>21</p>
       <p>22</p>
       <p>23</p>
       <p>24</p>
       <p>25</p>
       <p>26</p>
       <p>27</p>
       <p>28</p>
       <p>29</p>
       <p>30</p>
       <p>31</p>
       <p>32</p>
   </div>
</body>

8、场景八:flex布局中,元素使用space-between最后一行两边分布的问题?

如果我们每一行显示的个数为n,那我们可以最后一行子项的后面加上n-2个span元素,span元素的宽度和其它子项元素宽度一样,但不用设置高度。

为什么是添加n-2个span元素呢?

当最后一行只有1个子元素时,他会默认靠左,不用处理

当最后一行子元素正好时,我们就不用关心这个问题。

所以要去掉这两种情况,只需要加n-2个span元素就好

<style>
     .container {
       width: 500px;
       display: flex; /*弹性布局*/
       justify-content: space-between; /*两端对齐*/
       flex-wrap: wrap; /*超出部分换行*/
    }
     .item {
       width: 120px;
       height: 100px;
       background-color: pink;
       margin-top: 10px;
    }
     .container span {
       width: 120px; /*span宽和子项宽一样*/
    }
   </style>
 </head>
 <body>
   <div class="container">
     <div class="item">1</div>
     <div class="item">2</div>
     <div class="item">3</div>
     <div class="item">4</div>
     <div class="item">5</div>
     <div class="item">6</div>
     <div class="item">7</div>
     <!--以防万一,子项个数不够,最后一排出现两端对齐,达不到预期效果-->
     <span></span>
     <span></span>
   </div>
 </body>

9、场景九:grid网格中的响应式断行效果的处理

当我们想尽可能多的在一行显示子项的个数时,有可能会出现子项个数不满一行的情况。那这个时候利用网格布局,使用auto-fill和auto-fit就会是两个完全不同的效果。

  • auto-fill :网格的最大重复次数(正整数),如果有剩余空间,则会保留剩余空间,而不改变网格项目的宽度。
  • auto-fit:网格的最大重复次数(正整数),如果有剩余空间,网格项平分剩余空间来扩展自己的宽度。

以下情况只会出现在子项内容不能占满一行时。也就是说万一内容不能占满一行,则使用auto-fill就会出现空白问题。我们把auto-fill改成auto-fit就解决了这个问题

<style>
   .container {
       width: 100%;
       display: grid;
       /*grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));*/
       /*以防万一,子项不足占据一行时*/
        grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
       grid-template-rows: 250px;
       grid-auto-flow: row;
       grid-auto-rows: 250px;
       gap: 10px;
  }
   .container .item:nth-child(even) {
       background-color: skyblue;
  }
   .container .item:nth-child(odd) {
       background-color: pink;
  }
</style>
<body>
   <div class="container">
       <div class="item"></div>
       <div class="item"></div>
       <div class="item"></div>
       <div class="item"></div>
   </div>
</body>

为帮助到一部分同学不走弯路,真正达到一线互联网大厂前端项目研发要求,首次实力宠粉,打造了《30天挑战学习计划》,内容如下:

HTML/HTML5,CSS/CSS3,JavaScript,真实企业项目开发,云服务器部署上线,从入门到精通

  • PC端项目开发(1个)
  • 移动WebApp开发(2个)
  • 多端响应式开发(1个)

共4大完整的项目开发 !一行一行代码带领实践开发,实际企业开发怎么做我们就是怎么做。从学习一开始就进入工作状态,省得浪费时间。

从学习一开始就同步使用 Git 进行项目代码的版本的管理,Markdown 记录学习笔记,包括真实大厂项目的开发标准和设计规范,命名规范,项目代码规范,SEO优化规范

从蓝湖UI设计稿 到 PC端,移动端,多端响应式开发项目开发

  • 真机调试,云服务部署上线;
  • Linux环境下 的 Nginx 部署,Nginx 性能优化;
  • Gzip 压缩,HTTPS 加密协议,域名服务器备案,解析;
  • 企业项目域名跳转的终极解决方案,多网站、多系统部署;
  • 使用 使用 Git 在线项目部署;

这些内容在《30天挑战学习计划》中每一个细节都有讲到,包含视频+图文教程+项目资料素材等。只为实力宠粉,真正一次掌握企业项目开发必备技能,不走弯路 !

过程中【不涉及】任何费用和利益,非诚勿扰 。

点击进入:30 天挑战学习计划 Web 前端从入门到实战 | arry老师的博客-艾编程

手把手教你模拟登录豆瓣并爬取个人书影音数据:从Cookie解析到反爬攻防实战 在开始写代码之前,先明确我们需要的工具。:建议用3.10以上版本,方便使用一些新特性(如match语句)httpx:比requests更现代,支持HTTP/2,异步性能强,连接池复用好:解析HTML,语法简单,容错性强selenium:仅用于处理登录时的滑块验证(模拟真人)pandas:最终数据清洗和导出Excel/CSVretrying:自动重试机制,应对临时封禁:随机UA,降低特征lxml:作为BeautifulSoup的解析器,速度快为什么不只用requests? 阅读详情

相关推荐

新能源场站必看:一次调频与AGC/AVC的协同控制逻辑解析(含典型拓扑图)

本文深度解析了新能源场站中一次调频与AGC/AVC的协同控制逻辑。针对电网频率与电压稳定需求,详细阐述了三者在响应时序、控制目标上的分工与配合,并重点剖析了以RCL-0923装置为核心的指令融合架构与典型拓扑,为场站实现高效、稳定的协同运行提供了清晰的实践指导。

brown的博客 1062

常见的8个前端防御性编程方案

关于前端防御性编程我们大多数情况可能遇到过,后端的由于同时请求人数过多,或者数据量过大,又或者是因为异常导致服务异常,接口请求失败,然后前端出现白屏或者报错还有一种情况,是前端自身写的代码...

petertanjinjie的博客 518

Dirsearch的下载、安装和使用(全)

Dirsearch工具的下载、安装和使用,超详细超全面

weixin_68416970的博客 1万+

使用 scrollbar-gutter CSS 属性解决由滚动条引起的不必要的布局偏移

使用 scrollbar-gutter CSS 属性解决由滚动条引起的不必要的布局偏移

5794

从5V降到3.3V,你的LDO到底有多烫?手把手算功耗、选散热,避开这些坑

本文详细解析了LDO在5V转3.3V电路中的发热问题,提供了精确的功耗计算公式和散热设计方法。通过对比不同封装的热阻参数和优化PCB布局,帮助工程师有效降低LDO温度,避免热保护触发。文章还探讨了替代方案的技术拐点,为电源系统优化设计提供实用指导。

weixin_30304375的博客 437

深入解析JESD204B Subclass 1中的SYSREF与LMFC同步机制

本文深入解析了JESD204B Subclass 1协议中的核心同步机制,重点阐述了SYSREF信号如何作为系统级参考,对齐所有设备内部的本地多帧时钟(LMFC),从而实现高速多通道数据采集系统中的确定性延迟。文章结合实战经验,详细说明了硬件设计、时序要点及软件配置流程,是解决多ADC芯片同步对齐问题的关键指南。

weixin_29271263的博客 398

蹦的一下,又来一个新属性scrollbar-gutter

这是一个 **scrollbar**家族的属性, scrollbar-gutter 可以让滚动条出现的时候内容不晃动。

DJCBPL的专栏 1716

linux中的sendmail发送邮件

linux下的sendmail发送邮件

无痕的博客 6432

什么是防御性编程,如何进行防御性编程

一、什么是防御性编程 详细请见:http://www.uml.org.cn/codeNorms/201007165.asp 防御性编程是一种细致、谨慎的编程方法。为了开发可靠的软件,我们要设计系统中的每个组件,以使其尽可能地“保护”自己。我们通过明确地在代码中对设想进行检查,击碎了未记录下来的设想。这是一种努力,防止(或至少是观察)我们的代码以将会展现错误行为的方式被调用。 防御性编

浪漫鼠 9370

【KingSCADA】如何创建新应用

KingSCADA3.8集成开发环境是基于工程的应用管理模式,实现了对多个应用的集中开发和管理的功能,一个工程可以同时管理多个应用,即在KingSCADA3.8工程设计器中可以同时对多个应用进行开发,应用之间可以实现相互复制、粘贴等功能,大大提高了开发效率。(此处感觉和VS类似)使用KingSCADA3.8开发的系统称为应用,一个完整的应用一般包含以下部分或全部内容:IO设备、IO采集点、图形界面、动画链接、趋势曲线、报警和事件、历史记录、数据库、Web Server等部分。

做有价值的事,积累有价值的笔记! 3109

95.qt qml-诺谦通用可扩展多功能QML界面

如下图所示:自带一个功能界面,可以通过功能界面添加不同功能,并且可以固定到顶部水平导航栏中,对于N多小功能的项目而言,非常方便,这样用户就可以根据自己喜好来使用自己常用的功能了。

抵抗时间扭曲,坚持做一件有意义的事 3048

大厂程序员提倡“防御性编程”:故意把代码写得很烂,万一自己被裁,要确保留下的代码不可维护!...

点击关注公众号:互联网架构师,后台回复2T获取2TB学习资源!上一篇:2T架构师学习资料干货分享大家好,我是互联网架构师!“码农们在工作中绝对不能按以前书上说的写优美清晰代码,要防御性编程,确保自己被裁,剩下的代码也是不可维护的”。近日一则关于用“防御性编码”应对大厂裁员潮的消息冲上职场社交平台热搜。这一策略背后的逻辑是,通过晦涩难懂、难以维护的代码,确保自己一旦离职,留下的代码难以替代,从而在...

emprere的博客 420

C++多线程 task--std::promise和std::future

本文主要讲解C++11/14/17中所提供的应用于多线程编程中的Task机制。Task可由如下几部分取得而本文主要讲解std::promise和std::future相关的内容。std::promise和std::future通过一个数据管道进行交流,可以将std::promise看作生产者,std::future看作消费者,其两者形成如下的方式交互std::promise本身是一个模版类,通过std::promise可以像数据管道中设置value,异常和相应的通知信息。std::promise提供了如下接

qls315的博客 1818

知乎万赞:2023年网络安全会成为新的互联网风口吗?自学的学习路线是怎样的?

即使目前很多人可以自学成才,“网络空间安全”也成为一级学科。

QXXXD的博客 1007

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

防御式编程

作为一名程序猿,或软件开发工程师,或技术工人,首要任务就是编写好代码(编写高质量代码)。那么编写好代码有什么用呢?靠编写好代码可以维持你的工作(基础),可以去影响你的同事和领导(让你同事和领导从代码中认为你是一个技术能力靠谱的人)(进阶),那么继续下去,你可能参与团队或部门或公司重要的项目或事情(高级),再下去,你就可以在团队和部门中提高你的技术影响力,从而你更有机会获得更多的资源(时间和人力)和更多的成就(升职和加薪)。当然,也有可能在你工作的环境中,编写好代码和编写坏代码结果一样。

wangjiang 2114

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

说说你对CSS中scrollbar-gutter属性的理解

是一个相对较新的 CSS 属性,它用于控制元素在滚动条出现时如何调整其内容的大小或布局。这个属性主要解决了在滚动条出现时,内容区域可能会突然变化(通常是缩小)的问题,这种变化可能会导致布局的不稳定或用户界面的闪烁。主要影响的是滚动条对布局的影响,而不是滚动条本身的样式或行为。如果你想自定义滚动条的外观,你可能需要使用其他 CSS 属性(如。属性的支持情况因浏览器而异。在使用它之前,最好检查你的目标浏览器是否支持这个属性,并考虑使用回退策略来处理不支持的情况。)或 JavaScript 库。

王铁柱666的博客 749

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

防御性编程

Author:bakari       Date:2012.8.25 本篇是我根据网上的一些陈述经过整理和总结而得。其中详细的内容我会标注出处。看不懂的可以查看原文. 一、什么事防御性编程 详细请见:http://www.uml.org.cn/codeNorms/201007165.asp         防御性编程是一种细致、谨慎的编程方法。为了开发可靠的软件,我们要设计系统中的每个组...

weixin_33725126的博客 262

收集一些前端的防御性编程技巧

值。如果没有明确添加括号,不能将其与。

yqdid的博客 1234

防御性编程?这不就来了

2023 全年都在降本增效,节能开猿的浪潮下度过。虽然本文是给大家将防御性编程如何实践,但是我还是希望每一个互联网打工人都能平稳度过这波寒冬。

IT界那些事儿 575

防御性编程:让系统坚不可摧

面对复杂多变的运行环境、不可预测的用户输入以及潜在的编程错误,如何确保软件在遭遇异常情况时依然能够稳定运行,是每位开发者必须面对的挑战。防御性编程(Defensive Programming)正是为解决这一问题而生的一种编程范式,它强调在编程过程中预见并防范潜在的错误和异常情况,从而增强软件的健壮性和稳定性。防御性编程是一种积极主动的编程策略,它要求开发者在编写代码时,不仅要关注功能的实现,更要关注代码的健壮性和稳定性。:对于字符串、数字等类型的数据,进行长度和范围检查,确保它们不超过系统处理能力的限制。

京东科技开发者 1425

告别页面抖动!scrollbar-gutter:控制滚动条空间的革命性CSS属性

你是否曾遇到过这样的尴尬:当页面内容动态加载时,滚动条突然出现导致页面元素整体偏移?或者精心设计的侧边栏因为滚动条宽度而"忽胖忽瘦"?这些问题的根源,在于传统滚动条会占用文档空间并引发重排。而CSS新属性`scrollbar-gutter`(滚动条槽)的出现,彻底解决了这个困扰前端开发者多年的痛点。本文将带你掌握这个强大属性的所有用法,让页面布局从此稳如泰山。 ## 为什么需要scrollbar...

gitblog_00709的博客 654

防御性编程技巧

在防御性编程的大框架之下,有许多常识性的规则。人们在想到防御性编程的时候,通常都会想到“断言”,这没有错。我们将在后面对此进行讨论。但是,还是有一些简单的编程习惯可以极大地提高代码的安全性。尽管看上去像是常识,但是这些规则却往往被人们忽视,这就是为什么世界上并不缺少低质量软件的原因。只要程序员们警惕起来,受到足够的督促,更高的安全性和可靠的开发很容易就能够实现。在下面的几页中,将列出防御性编程的一些规则。我们将先从粗略的概览开始,整体地描述防御的技巧、过程和步骤。随着讨论的深入,我们会加入更多的细节,进一步

everpenny的专栏 8654

2025年10个强大 CSS 新特性

它们消除了许多 JavaScript 变通方法的需求,让你能够构建更简单、更快、更易于维护的布局和交互。CSS 持续进化,带来了许多新功能,让我们的工作更高效、代码更简洁、能力更强大。以下是十个你可以立即开始使用的亮点功能。这样的函数使得在 CSS 中进行直接的数学运算成为可能,减少了对预处理器或 JavaScript 的依赖。将自定义属性转变为具有类型、默认值和继承规则的完全声明的变量,使得它们可以用于动画等场景。(取余) 这样的新函数进行计算,从而避免了许多 JavaScript 或预处理器的技巧。

zz_jesse的博客 799

CSS/CSS3 功能实现·随记

1、background-size: cover; 2、object-fit: cover;

青蛙king的博客 725

2024年,你需要了解下这 12 个现代化 CSS 新属性

有时候,提升你的应用程序的CSS只需要一个简单的一行升级或增强!了解这12个属性,开始将它们融入到你的项目中,享受减少技术债务、去除JavaScript,以及为用户体验赢得轻松的胜利。1、aspect-ratio你是否曾为视频嵌入时的宽高比感到困扰?例如,我们常见的高清视频宽高比是16:9。过去,我们可能需要使用一些复杂的方法来实现这个比例,比如大家熟悉的“padding hack”。但现在,有了...

前端达人 1576

CSS 滚动条(scrollbar)的样式设置

1.滚动条的滚动方向 overflow:scroll /* x y 方向都会*/ 或者 overflow-x:scroll /*只是x方向*/ 或者 overflow-y:scroll /*只是y方向*/ 2.滚动条的属性 ::-webkit-scrollbar //滚动条整体部分 ::-webkit-scrollbar-button //滚动条两端的按钮 ::-webkit-scrollbar-track // 外层轨道 ::-webkit-scrollbar-track-pie

weixin_51523667的博客 1103
上一篇: 5大CSS重点、难点、易错点总结,入门学前端必看
下一篇: 快来领取,33个常用JavaScript功能已封装成方法,拿来即用
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

艾编程前端技术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值