让css设置的更具有合理性

目录

一、合理性设置宽高

二、避免重叠情况,不要只设置最大宽

三、优先使用弹性布局特性

四、单词、数字换行处理

五、其他编码建议


平常写css时,除了遵循一些 顺序、简化、命名上的规范,让css具有合理性也是重要的一环。

最近的需求场景:国际化翻译,从中文转换英文的转换结果,大部分的长度也会增加1.5~3倍,复杂的单词可能会增加的更多,也就导致了出现换行、文字覆盖/溢出的场景。

出现的这些问题只是内容的长度增加了,其实在书写样式时都可以避免大部分情况。

一、合理性设置宽高

场景1:宽、高并非都需要设置成固定值

<style>.tag {padding: 2px 3px;width: 136px;height: 28px;color: #000;box-sizing: border-box;border-radius: 6px;background: orange;}
</style>
<body><div class="tag">目前没有可用数据</div>
</body>

效果图:

这可能是我们从设计平台中直接复制过来的代码,看起来平平无奇,事实上不更改内容确实没什么问题,但是某个需求上的一次文字变更都会导致样式适配的不完美。

改进建议:若非绝对场景,宽高是没必要进行添加的,而是否换行可以根据实际场景设置。

推荐做法:宽度设置为自身可以空间 + 设置最大宽度,好处:文字少的时候不会空出剩余的空间,超出最大宽文字才会换行。若不想换行,可直接去掉最大宽。

 .tag {max-width: 160px;width: fit-content;}

二、避免重叠情况,不要只设置最大宽

<style>.box {display: flex;width: 300px;padding: 10px;border: 2px dashed #000;border-radius: 10px;}.label {max-width: 80px;}.value {width: 220px;background: orange;}</style>
<body><div class="box"><div class="label">身份信息:</div><div class="value">是一名特务,爱吃小熊饼干</div></div>
</body>

效果图:

由于左侧只设置成了最大宽,当内容发送变化的时候限制了宽度,换成英文字符长度增加后后会出现重叠情况

推荐做法:给宽和不给宽可以参考实际场景,注意不要只设置最大宽!

    .label {
-      //  max-width: 80px;
+        width: fit-content; word-break: break-all;}

三、优先使用弹性布局特性

场景1: 弹性对其方式替掉边距

<style>.box {display: flex;width: 300px;padding: 10px;border: 2px dashed #000;border-radius: 10px;}.btn {padding: 2px 4px;background: orange;border-radius: 3px;}.btn1 {margin-left: 210px;}.btn2 {margin-left: 10px;}
</style>
<body><div class="box"><div class="btn btn1">取消</div><div class="btn btn2">确定</div></div>
</body>

效果图:

这个出现的问题就比较明显了,不管是box宽度的增加还是按钮文字的变更都会影响距离左侧的距离。例如文字变成英文

    .box {display: flex;
+        justify-content: flex-end;}.btn1 {
-        /* margin-left: 210px; */}

场景2: 沾满剩余空间

<style>.box {display: flex;width: 390px;}.label {width: fit-content;word-break: break-all;}.value {padding: 0 4px;width: 220px;box-sizing: border-box;background: orange;}
</style><div class="box"><div class="label">Identity information:</div><div class="value">He is a spy who loves to eat teddy bear cookies</div>
</div>

由于右侧把宽度写死,当盒子宽度发生变化时,会导致右侧存在空白。

推荐做法:为了避免整体盒子的调整,对于label-value类似场景,可以使用flex:1让value沾满剩余空间

    .box {display: flex;width: 390px;}.value { 
+    	 flex:1;...}

四、单词、数字换行处理

在中文字符下大多数浏览器会默认允许在字符间换行,而英文单词和数字通常不会在内部断开换行。一般在弹窗场景出现问题居多。

  <style>.box {width: 300px;padding: 10px;border: 2px dashed #000;border-radius: 10px;}.value {padding: 0 4px;box-sizing: border-box;background: orange;}</style><div class="box"><div class="value">This is a long and HonorificabilitudinitatibuscalifragilisticexpialidociousTaumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahuグレートブリテンおよび北アイルランド連合王国という言葉は本当に長い言葉123123115615615616156156161616165165161615</div></div>

​修改:

方案1:调整 word-break

word-break: break-all;

方案2:调整 overflow-wrap

overflow-wrap: break-word;


五、其他编码建议

例子比较简单些,但确实是在项目中发生过的,当然也和自己写样式的习惯有关,写项目时除了关注实现,更应该考虑扩展。

除了上面几种避免覆盖情况,也应该注意一些编码坏习惯:

  1. 避免行内样式: 减少使用行内样式。虽然编写快速,但会影响标签可读性,尤其在多次迭代后。过度使用可能导致代码难以维护。

  2. 统一公共样式: 充分利用项目的公共样式库。例如,对于常用的flex布局,优先使用预定义的公共类,而非在业务代码中重复添加。

  3. 滥用浮动布局:过度依赖float,而不是使用更现代的flexbox或grid布局。

  4. 选择器嵌套过深:增加特异性,使样式难以重写,同时影响性能。

  5. 过度使用!important:滥用会破坏CSS的优先级规则,导致样式难以覆盖和维护。

  6. 重复编写相似样式:未充分利用CSS的继承特性,导致代码冗余。

  7. 未使用CSS预处理器:对于大型项目,不使用Sass或Less等工具,失去了代码复用和管理的便利。

  8. 滥用绝对定位:过度使用position: absolute,可能导致布局在不同屏幕尺寸下出现问题。

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

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

相关文章

Go小技巧易错点100例(二十一)

本篇内容&#xff1a; errors.Is方法与两种方式进行error比较 在Go语言中&#xff0c;处理错误&#xff08;error 类型&#xff09;时&#xff0c;errors.Is 和直接使用 操作符进行错误比较&#xff0c;虽然看起来都用于比较错误&#xff0c;但实际上它们有着根本的不同。这主…

【服务器项目部署】✈️将本地项目部署到服务器(二)!

目录 &#x1f44b;前言 &#x1f440;一、功能调整 &#x1f331;二、服务部署 &#x1f49e;️三、代码调整 &#x1f37b;四、章末 &#x1f44b;前言 小伙伴们大家好&#xff0c;上篇文章本地实践了如何将本地项目部署到服务器上&#xff0c;从服务器的选择、服务器环境…

Kafka消息队列

目录 前置内容常用脚本说明和示例描述与定义部分术语说明两种模式点对点模式发布订阅模式 topic主题命令行操作指令生产者Broker消费者 前置内容 队列&#xff1a; 先进先出 应用&#xff1a; 大数据中主要用于离线和实时处理 流程&#xff1a; Flume正常获取数据&#xff0c;…

如何使用 Ansys OptiSlang 同时运行多个参数化设计研究

了解如何通过使用 OptiSLang 同时运行多个参数化设计研究来提高工作效率。 了解参数化设计研究的重要性 参数化设计研究在工程和设计过程中起着至关重要的作用。通过改变输入参数&#xff0c;工程师可以探索不同设计选择的效果&#xff0c;并优化其设计以满足性能、成本或其他…

Nginx (40分钟学会,快速入门)

一、什么是Nginx ? 可以做什么 &#xff1f; Nginx 是高性能的 HTTP 和反向代理的 web 服务器&#xff0c;处理高并发能力是十分强大的&#xff0c;能经受高负载的考验&#xff0c;有报告表明能支持高达50000个并发的连接数.Nginx特点就是内存少&#xff0c;并发能力强。事实上…

【Rust自学】10.6. 生命周期 Pt.2:生命周期的语法与例子

喜欢的话别忘了点赞、收藏加关注哦&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 10.6.1. 生命周期标注语法 生命周期的标注并不会改变引用的生命周期长度。如果某个函数它制定了泛型生命周期参数&#xff0c;那么它就可…

【Android项目学习】3. MVVMHabit

项目链接 文章目录 一. 项目结构1. 项目整体划分2. 模块细分 二. Android知识点学习1. registerActivityLifecycleCallbacks方法2. 一. 项目结构 1. 项目整体划分 MVVMHabit是以谷歌DataBindingLiveDataViewModel框架为基础&#xff0c;整合OkhttpRxJavaRetrofitGlide等流行…

【大模型】7 天 AI 大模型学习

7 天 AI 大模型学习 Day 3 今天&#xff0c;我们要一起学习大模型微调了 &#xff5e; 包括&#xff1a;大模型微调领域概览、Lora微调 等 &#xff5e; 文章目录 7 天 AI 大模型学习 Day 3大模型微调概览大模型项目 pipeline提示词工程 Prompt EngineeringIn-context Learning…

密码学精简版

密码学是数学上的一个分支&#xff0c;同时也是计算机安全方向上很重要的基础原理&#xff0c;设置密码的目的是保证信息的机密性、完整性和不可抵赖性&#xff0c;安全方向上另外的功能——可用性则无法保证&#xff0c;可用性有两种方案保证&#xff0c;冗余和备份&#xff0…

DeepSeek-V3 正式发布,已在网页端和 API 全面上线,性能领先,速度飞跃。

DeepSeek-V3 在推理速度上相较历史模型有了大幅提升。在目前大模型主流榜单中&#xff0c;DeepSeek-V3 在开源模型中位列榜首&#xff0c;与世界上最先进的闭源模型不分伯仲。 简介 DeepSeek-V3是一个强大的混合专家 (MoE) 语言模型&#xff0c;总共有 671B 个参数&#xff0c;…

图像超分辨新SOTA!南洋理工提出InvSR,利用大型预训练扩散模型图像先验来提高 SR 性能, 登上Huggingface热门项目。

南洋理工大学的研究者们提出了一种基于扩散反演的新型图像超分辨率 (SR) 技术&#xff0c;可以利用大型预训练扩散模型中蕴含的丰富图像先验来提高 SR 性能。 该方法的核心是一个深度噪声预测器&#xff0c;用于估计前向扩散过程的最佳噪声图。一旦训练完成&#xff0c;这个噪…

MySQL低版本没有函数row_number() over的解决方案

最近在维护老项目时&#xff0c;需要对历史数据做分析取出分区数据中的第一条&#xff0c;无奈因为MySQL版本过低&#xff0c;无法使用函数row_number() over&#xff0c;苍了个天~ 不过这点小事怎么可能难倒我们这群考古专家呢&#xff0c;在此分享一下解决方案。 主要原因是问…

贵州省贵安新区地图+全域数据arcgis格式shp数据矢量路网地名+卫星影像底图下载后内容测评

贵州省贵安新区地图全域数据arcgis格式shp数据矢量路网地名卫星影像底图 贵安新区地图是一款基于ArcGIS格式的地理信息系统数据集&#xff0c;包含2022年3月更新的详尽矢量路网、地名信息以及卫星影像底图。这款数据集是针对贵安新区这一特定区域设计的&#xff0c;对于规划、…

npm install --global windows-build-tools --save 失败

注意以下点 为啥下载windows-build-tools&#xff0c;是因为node-sass4.14.1 一直下载不成功&#xff0c;提示python2 没有安装&#xff0c;最终要安装这个&#xff0c;但是安装这个又失败&#xff0c;主要有以下几个要注意的 1、node 版本 14.21.3 不能太高 2、管理员运行 …

音视频入门基础:MPEG2-PS专题(5)——FFmpeg源码中,解析PS流中的PES流的实现

一、引言 从《音视频入门基础&#xff1a;MPEG2-PS专题&#xff08;3&#xff09;——MPEG2-PS格式简介》中可以知道&#xff0c;PS流由一个个pack&#xff08;包装&#xff09;组成。一个pack 一个pack_header 一个或多个PES_packet。pack_header中还可能存在system header…

记一次k8s下容器启动失败,容器无日志问题排查

问题 背景 本地开发时&#xff0c;某应用增加logback-spring.xml配置文件&#xff0c;加入必要的依赖&#xff1a; <dependency><groupId>net.logstash.logback</groupId><artifactId>logstash-logback-encoder</artifactId><version>8…

【问题记录】npm create vue@latest报错

1&#xff0c;错误日志 npm error code EPERM npm error syscall mkdir npm error path D:\Program Files\nodejs\node_cache\_cacache npm error errno EPERM npm error FetchError: Invalid response body while trying to fetch https://registry.npmjs.org/create-vue: EP…

JavaWeb开发(六)XML介绍

1. XML介绍 1.1. 什么是XML &#xff08;1&#xff09;XML 指可扩展标记语言(EXtensible Markup Language)XML 是一种很像HTML的标记语言。   &#xff08;2&#xff09;XML 的设计宗旨是传输数据(目前主要是作为配置文件)&#xff0c;而不是显示数据。   &#xff08;3&a…

Vue3实现PDF在线预览功能

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;Vue篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来Vue篇专栏内容:Vue3现PDF在线预览功能 前言 在开发中&#xff0c;PDF预览和交互功能是一个常见的需求。无论是管理…

win32汇编环境,在窗口程序中画简单图形

;运行效果 ;win32汇编环境&#xff0c;在窗口程序中画简单图形 ;展示点、直线、圆、椭圆、正方形、矩形、圆角矩形的画法 ;将代码复制进radasm软件里&#xff0c;直接编译可运行.重要部分加备注。 ;>>>>>>>>>>>>>>>>>>&…