让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 Honorificabilitudinitatibus
      califragilisticexpialidocious
      Taumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahu
      グレートブリテンおよび北アイルランド連合王国という言葉は本当に長い言葉
      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,可能导致布局在不同屏幕尺寸下出现问题。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【微服务】1、引入;注册中心;OpenFeign

微服务技术学习引入 - 微服务自2016年起搜索指数持续增长&#xff0c;已成为企业开发大型项目的必备技术&#xff0c;中高级java工程师招聘多要求熟悉微服务相关技术。微服务架构介绍 概念&#xff1a;微服务是一种软件架构风格&#xff0c;以专注于单一职责的多个响应项目为基…

设计模式 结构型 组合模式(Composite Pattern)与 常见技术框架应用 解析

组合模式&#xff08;Composite Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许你将对象组合成树形结构来表示“部分-整体”的层次结构。通过这种模式&#xff0c;客户端可以一致地处理单个对象和对象组合。 在软件开发中&#xff0c;我们经常会遇到处理对象的层…

抢先体验:人大金仓数据库管理系统KingbaseES V9 最新版本 CentOS 7.9 部署体验

一、简介 KingbaseES 是中国人大金仓信息技术股份有限公司自主研发的一款通用关系型数据库管理系统&#xff08;RDBMS&#xff09;。 作为国产数据库的杰出代表&#xff0c;它专为中国市场设计&#xff0c;广泛应用于政府、金融、能源、电信等关键行业&#xff0c;以高安全性…

Linux驱动开发(17):输入子系统–电阻触摸驱动实验

有关电阻触摸的基础知识内容可以参考野火STM32相关教程&#xff0c;这里只介绍电阻触摸驱动的相关内容。与一般的微处理器 不同&#xff0c;本节使用的imx6ull内自带触摸屏控制器&#xff0c;只需要把电阻触摸屏的信号线接到对应的IO即可&#xff0c;通过配置imx6ull 触摸屏控制…

8、RAG论文笔记(Retrieval-Augmented Generation检索增强生成)

RAG论文笔记 1、 **研究背景与动机**2、方法概述3、RAG 模型架构3.1总体架构3.2 Generator&#xff08;生成器&#xff09;3.3 检索器&#xff08;Retriever&#xff09;3.4训练&#xff08;Training&#xff09;3.5**解码方法**&#xff08;求近似 &#xff09;3.6微调的参数 …

简易CPU设计入门:通用寄存器的读写

项目代码下载 请大家首先准备好本项目所用的源代码。如果已经下载了&#xff0c;那就不用重复下载了。如果还没有下载&#xff0c;那么&#xff0c;请大家点击下方链接&#xff0c;来了解下载本项目的CPU源代码的方法。 下载本项目代码 准备好了项目源代码以后&#xff0c;我…

【动手学电机驱动】STM32-MBD(3)Simulink 状态机模型的部署

STM32-MBD&#xff08;1&#xff09;安装 Simulink STM32 硬件支持包 STM32-MBD&#xff08;2&#xff09;Simulink 模型部署入门 STM32-MBD&#xff08;3&#xff09;Simulink 状态机模型的部署 【动手学电机驱动】STM32-MBD&#xff08;3&#xff09;Simulink 状态机模型部署…

Linux运维相关基础知识(二)

系列文章目录 Linux常用命令 linux 账号管理与权限设定 Linux运维相关基础知识 文章目录 系列文章目录前言1. 自动任务执行at 与 atdcrontab 与 crond 2. SELinuxtty多任务管理与进程管理相关的命令/proc/* 文件的意义SELinux 3. 守护进程早期SystemV的init管理行为中daemon…

K8s集群平滑升级(Smooth Upgrade of K8S Cluster)

简介&#xff1a; Kubernetes ‌ &#xff08;简称K8s&#xff09;是一个开源的容器编排和管理平台&#xff0c;由Google开发并维护。它最初是为了解决谷歌内部大规模容器管理的问题而设计的&#xff0c;后来在2014年开源&#xff0c;成为云原生技术的核心组成部分。‌‌1 K8…

党员学习交流平台

本文结尾处获取源码。 本文结尾处获取源码。 本文结尾处获取源码。 一、相关技术 后端&#xff1a;Java、JavaWeb / Springboot。前端&#xff1a;Vue、HTML / CSS / Javascript 等。数据库&#xff1a;MySQL 二、相关软件&#xff08;列出的软件其一均可运行&#xff09; I…

uniapp--HBuilder开发

提示&#xff1a;本文为学习内容&#xff0c;若有错误&#xff0c;请联系作者&#xff0c;谦虚受教。 文章目录 前言一、下载HBuilder二、添加modbus相关库1.下载nodejs2.下载modbus库3.项目添加modbus库 三、HBuilder相关功能语句1.文件夹说明2.消息信息框3.开关按钮4.选中按钮…

GraphRAG实践:neo4j试用

文章目录 前言欢迎界面示例数据库使用大模型生成查询语句总结 前言 上回说道&#xff0c;我们使用docker部署了一个neo4j。 我们现在对它进行一些试用。 欢迎界面 在浏览器中输入http://localhost:7474/ 输入对应的东西&#xff0c;点击connect 现在咱的数据库里什么都没有…

两种分类代码:独热编码与标签编码

目录 一、说明 二、理解分类数据 2.1 分类数据的类型&#xff1a;名义数据与序数数据 2.2 为什么需要编码 三、什么是独热编码&#xff1f; 3.1 工作原理&#xff1a;独热编码背后的机制 3.2 应用&#xff1a;独热编码的优势 四、什么是标签编码&#xff1f; 4.1 工作原理&…

【AWS SDK PHP】This operation requests `sigv4a` auth schemes 问题处理

使用AWS SDK碰到的错误&#xff0c;其实很简单&#xff0c;要装个扩展库 保持如下 Fatal error: Uncaught Aws\Auth\Exception\UnresolvedAuthSchemeException: This operation requests sigv4a auth schemes, but the client currently supports sigv4, none, bearer, sigv4-…

限时特惠,香港服务器,低至53元/年

家人们谁懂啊&#xff01;香港服务器这价格简直逆天了&#xff0c;居然比内地的还便宜&#xff01;就拿阿里云来说&#xff0c;人家最低配置的服务器&#xff0c;价格都很难做到这么亲民。 最低配的就不说了&#xff0c;2 核 4G 的配置&#xff0c;应对日常业务稳稳当当&#x…

USB子系统学习(一)USB电气信号

文章目录 1、声明2、USB协议概述3、USB电气信号3.1、USB基础概念3.1.1、低速/全速信号电平3.1.2、高速信号电平 3.2、学习目标3.3、设备断开与连接3.3.1、连接3.3.2、断开 3.4、复位3.5、设备速率识别3.5.1、低速/全速3.5.2、高速 3.6、数据信号3.6.1、低速/全速的SOP和EOP3.6.…

【机器学习篇】从新手探寻到算法初窥:数据智慧的开启之门

文章目录 【机器学习篇】从新手探寻到算法初窥&#xff1a;数据智慧的开启之门前言一、什么是机器学习&#xff1f;二、机器学习的基本类型1. 监督学习&#xff08;Supervised Learning&#xff09;2. 无监督学习&#xff08;Unsupervised Learning&#xff09;3. 半监督学习&a…

SQL-Server链接服务器访问Oracle数据

SQL Server 链接服务器访问 Oracle 离线安装 .NET Framework 3.5 方法一&#xff1a;使用 NetFx3.cab 文件 下载 NetFx3.cab 文件&#xff0c;并将其放置在 Windows 10 系统盘的 C:Windows 文件夹中。 以管理员身份运行命令提示符&#xff0c;输入以下命令并回车&#xff1a; …

【C++】矩阵转置问题详解与优化

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;题目解析&#x1f4af;第一种实现方式&#xff1a;我的初始做法实现思路优缺点分析 &#x1f4af;第二种实现方式&#xff1a;我的优化做法实现思路优缺点分析 &#x1f4a…

比QT更高效的一款开源嵌入式图形工具EGT-Ensemble Graphics Toolkit

文章目录 EGT-Ensemble Graphics Toolkit介绍EGT具备非常高的图形渲染效率EGT采用了非常优秀的开源2D图形处理引擎-Cairo开源2D图形处理引擎Cairo的优势Cairo 2D图像引擎的性能Cairo 2D图像引擎的实际应用案例彩蛋 - 开源EDA软件KiCAD也在使用Cairo EGT高效的秘诀还有哪些Cairo…