CSS 1PX Border问题解决

CSS Border 在不同的设备,显示的宽度会不一致,原因就在于像素比,现在显示器动辄就 2k或者 4k,物理像素比逻辑像素都会大,CSS 用的是逻辑像素。CSS Border 就会看起来比设计稿宽,所以一般Border像素都会缩小 50%。做法主要有背景图片、CSS 伪元素和视口缩小,背景图在某些设备上可能会发虚,这里我们就看一下伪元素和视口的方式。

scss 实现的border缩小


$hidpi: "-webkit-min-device-pixel-ratio: 1.25" ; 

@mixin border-hidpi-base($positionRelative) {
    @media ($hidpi) { // Assuming $hidpi is a predefined media query in SCSS
        @if $positionRelative {
            position: relative;
        }

        &:before {
            transform: scale(0.5);
            transform-origin: 0 0;
            content: "";
            position: absolute;
            top: 0;
            left: 0;
            width: 200%;
            height: 200%;
        }
    }
}

@mixin border-hidpi($side, $color, $positionRelative: true) {
    @if $side == 'all' {
        @include border-hidpi-base($positionRelative);

        border: 1px solid $color;

        @media ($hidpi) {
            border-width: 0;

            &:before {
                border: 1px solid $color;
            }
        }
    } @else if $side == 'top' {
        @include border-hidpi-base($positionRelative);

        border-top: 1px solid $color;

        @media ($hidpi) {
            border-top-width: 0;

            &:before {
                border-top: 1px solid $color;
            }
        }
    } @else if $side == 'right' {
        @include border-hidpi-base($positionRelative);

        border-right: 1px solid $color;

        @media ($hidpi) {
            border-right-width: 0;

            &:before {
                border-right: 1px solid $color;
            }
        }
    } @else if $side == 'bottom' {
        @include border-hidpi-base($positionRelative);

        border-bottom: 1px solid $color;

        @media ($hidpi) {
            border-bottom-width: 0;

            &:before {
                border-bottom: 1px solid $color;
            }
        }
    } @else if $side == 'left' {
        @include border-hidpi-base($positionRelative);

        border-left: 1px solid $color;

        @media ($hidpi) {
            border-left-width: 0;

            &:before {
                border-left: 1px solid $color;
            }
        }
    }
}

@mixin border-hidpi-reset() {
    border-width: 0;
    @media ($hidpi) {
        &:before {
            display: none;
        }
    }
}

视口缩小

视口缩小的方式,单位要 rem,缩小之后,屏幕宽度为原始尺寸的两倍,fontSize 要变大。

<meta name="viewport" content="width=device-width, initial-scale=0.5, maximum-scale=0.5, minimum-scale=0.5, user-scalable=no">

rem 单位修改函数。

(function flexible(window, document, isToFixed) {
                var docEl = document.documentElement
                //  375屏幕的font-size是100,也就是说,iphone6的font-size是100,设计稿按照750px设计,0.01rem = 1px
                function setRemUnit() {
                    var rem = docEl.clientWidth / 7.5
                    docEl.style.fontSize = Math.floor(rem) + 'px'
                }
                setRemUnit()
                // reset rem unit on page resize
                window.addEventListener('resize', setRemUnit)
            }(window, document, isToFixed))

Border 的问题原理就是像素比,理解了像素比也就理解了为什么要进行缩小。由于 1px 逻辑像素会对应多个物理像素,在视觉上会产生变宽了的感觉。

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

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

相关文章

javaWeb智能医疗管理系统

简介 在当今快节奏的生活中&#xff0c;智能医疗系统的崛起为医疗行业带来了一场革命性的变革。基于JavaWeb技术开发的智能医疗管理系统&#xff0c;不仅为医疗机构提供了高效、精准的管理工具&#xff0c;也为患者提供了更便捷、更个性化的医疗服务。本文将介绍一个基于SSM&a…

树莓集团产业生态建设之特色产业服务:人才项目转化中心

树莓集团在产业生态建设中&#xff0c;积极输出特色产业服务——人才项目转化中心。该中心依托数字产业园致力于推动创新创业工作&#xff0c;通过链接产业人才聚集地与树莓认证的导师库体系&#xff0c;为人才及相关课题项目提供全方位的服务。 树莓集团人才项目转化中心以人…

Python学习(四)文件操作

文件操作 想想我们平常对文件的基本操作&#xff0c;大概可以分为三个步骤(简称文件操作三步走): ① 打开文件 ② 读写文件 ③ 关闭文件 注意:可以只打开和关闭文件&#xff0c;不进行任何读写 在Python&#xff0c;使用open函数&#xff0c;可以打开一个已经存在的文件&…

IP爬虫代理服务器是什么以及为什么使用爬虫代理?

在网络抓取领域&#xff0c;爬虫代理发挥着关键作用。 但它们到底是什么&#xff1f; 从本质上讲&#xff0c;爬虫代理是位于网络抓取工具和目标网站之间的中间服务器。 该中间服务器充当盾牌&#xff0c;提供匿名性&#xff0c;并允许您访问网站并提取数据&#xff0c;而无需透…

IDEA配置Maven环境

黑马程序员JavaWeb开发教程 文章目录 如果当前有已经打开项目的话&#xff0c;File -> Close Project 到以下页面之后选择 Customize -> All settings… 配置maven的安装目录&#xff0c;maven的配置文件&#xff0c;maven的本地仓库&#xff08;修改完成之后一定要先…

mybatis进阶篇-执行CRUD操作-typeAliases别名-接口绑定

目录结构 所需jar包 https://download.csdn.net/download/weixin_44201223/89160447?spm1003.2166.3001.6637.1 1.创建数据表&#xff08;book&#xff09; # 创建book表 create table book(id int auto_increment primary key,name varchar(255) ,price double ,num int )…

Linux OpenSSH最新版9.7p1升级操作详细教程

原创声明&#xff1a;非本人许可&#xff0c;谢绝转载&#xff01; 1.背景说明 前几天与朋友闲聊中得知他朋友圈有服务器因OpenSSH漏洞遭受攻击的事情&#xff0c;OpenSSH重要性这里就不废话了&#xff0c;在网上一查&#xff0c;公布的漏洞还真不少&#xff0c;其中还有不少…

RK3588平台开发系列讲解(PCIe开发篇2)

根据原理图填写DTS 原理图是基于IO信号的视⻆来描述硬件&#xff0c;IO信号是跟PHY的index强相关的&#xff0c;前⾯提到RK3588的controller和PHY的index可能不⼀致&#xff0c;所以看原理图的时候需要特别注意这⼀点。这⾥给出⼀些填写建议&#xff0c;并通过⽰例说明如何将原…

socket通信基础讲解及示例-C

socket通信之C篇 服务端与客户端简介 socket通信服务端与客户端通信模型通信实战server&#xff08;服务端&#xff09;创建client&#xff08;客户端&#xff09;创建 函数详解创建套接字 socket绑定端口bind进入监听状态listen获取客户端连接请求accept接收网络数据read发送数…

音素与视素(Viseme)

什么是视素&#xff08;视位&#xff09; 音素(Phoneme)&#xff0c;是人类语言中能够区别意义的最小声音单位。视素(Viseme)&#xff0c;是指与某一音素相对应的嘴、舌头、下腭等可视发音器官所处的状态。Viseme是MPEG-4 标准提出来的概念。 有时Viseme也翻译为视位。下面会…

JavaEE初阶Day 10:多线程(8)

目录 Day 10&#xff1a;多线程&#xff08;8&#xff09;单例模式阻塞队列1. 生产者消费者模型1.1 生产者消费者模型解耦合1.2 生产者消费者模型削峰填谷 2. 生产者消费者代码3. 阻塞队列实现 Day 10&#xff1a;多线程&#xff08;8&#xff09; 单例模式 单例模式&#xf…

springboot中mongodb连接池配置-源码分析

yml下spring.data.mongodb 以前mysql等在spring.xxx下配置&#xff0c;现在springboot新版本&#xff08;小编3.2.3&#xff09;在spring.data.xxx下了&#xff0c;如下所示&#xff0c;mongodb的配置在spring.data.mongodb下&#xff1a; 连接池相关参数配置-源码分析 拼接在…

vue3 删除对象中的属性,可以使用js里的delete,但需注意ts定义对象类型!

如上如&#xff0c;当使用delete 删除stateData中的属性时&#xff0c; 报错&#xff0c;意思为 TypeScript 错误“‘delete’ 运算符的操作数必须是可选的 什么原因呢&#xff1f;是因为我偷懒 缺少了ts定义类型 方法一&#xff1a; &#xff08;不推荐&#xff09; delete …

【网络安全 | 信息收集】JS文件信息收集工具LinkFinder安装使用教程

文章目录 前言安装教程使用教程 前言 JavaScript文件可能会泄露敏感信息&#xff0c;如注释中的机密信息、内部IP地址&#xff0c;以及包含未授权访问或其他漏洞的URL。手动检查这些信息效率低下&#xff0c;而该工具——LinkFinder&#xff0c;可用于自动收集JavaScript文件中…

Windows10系统中忘记MySQL数据库root权限登录密码

本文档所使用的MySQL版本为MySQL5.7>> mysqld_safe --skip-grant-tables&mysql -u root mysql在命令行中使用上面的命令登录MySQL&#xff0c;其中--skip-grant-tables允许用户跳过权限表进行无密码登录 >> UPDATE user SET authentication_stringPASSWORD(&q…

2024 年 Web 前端开发趋势

希腊哲学家赫拉克利特认为&#xff0c;变化是生命中唯一不变的东西。这句话适用于我们的个人生活、行业和职业领域。 尤其是前端开发领域&#xff0c;新技术、开发趋势、库和框架不断涌现&#xff0c;变化并不陌生。最近发生的一些事件正在改变开发人员构建网站和 Web 应用的方…

buuctf之ciscn_2019_c_1

ciscn_2019_c_1 一、查看属性二、静态分析三、动态分析四、思路五、exp 一、查看属性 首先还是必要的查看属性环节&#xff1a; 可以知道该文件是一个x86架构下的64位小端ELF文件&#xff0c;开启了栈不可执行&#xff08;NX&#xff09; 执行一下&#xff0c;先有一个选择&…

容联云QCon全球软件大会分享:大模型引领“营销服”创新实践

近日&#xff0c;QCon 全球软件开发大会正式召开。容联云大模型产品负责人唐兴才受邀出席&#xff0c;并分享营销服场景中&#xff0c;大模型的创新应用与实践。 唐兴才指出&#xff0c;在大模型浪潮的推动下&#xff0c;营销服场景正经历着前所未有的变革。面对激烈的市场竞争…

LineVul: 基于Transformer的行号级漏洞预测

文中提出一种基于Transformer的行号级漏洞预测方法 LineVul&#xff0c;以解决最先进的 IVDetect 方法的若干局限性。该方法通过对包含 188k C/C 函数的大规模真实数据集进行实证评估&#xff0c;LineVul 实现了&#xff1a;&#xff08;1&#xff09;函数级预测的 F1-measure …

sublime text的json快捷键

系统 macos 配置 sublime Text->Settings->Key Bindings 效果 可以看到&#xff0c;按&#xff1a;shiftcommandp&#xff0c;会出现快捷键窗口&#xff0c;打pretty&#xff0c;会出现Format JSON&#xff0c;最右侧显示⌘J&#xff0c;说明只需要macos的⌘和J同时按…
最新文章