前端必会的 HTML+CSS 常用技巧 之 移动端 1px 边框

写在开头

正文之前,我们需得了解几个重要的名词: 物理像素、设备独立像素和设备像素比
工作中我们通常使用 px 作为定义元素宽高、边框粗细、内外边距等的单位,但是需要注意的是:

CSS样式里面的 px 和 物理像素 并不是相等的。
CSS中的像素只是一个抽象的单位,在不同的设备中,1px所代表的物理像素是不同的。
在PC端,CSS的1px一般对应着电脑屏幕的1个物理像素,
但在移动端,CSS的1px由于设备机型的不同,所呈现出来的可能不是一个像素,可能是几个物理像素。

物理像素(physical pixel)

物理像素又被称为设备像素、设备物理像素,它是显示器(电脑、手机屏幕)最小的物理显示单位,每个物理像素由颜色值和亮度值组成。所谓的一倍屏、二倍屏(Retina)、三倍屏,指的是设备以多少物理像素来显示一个CSS像素,也就是说,多倍屏以更多更精细的物理像素点来显示一个CSS像素点,在普通屏幕下1个CSS像素对应1个物理像素,而在Retina屏幕下,1个CSS像素对应的却是4个物理像素

设备独立像素(device-independent pixel)

设备独立像素又被称为CSS像素,也就是是我们写CSS时所用的像素(px),它是一个抽象的单位,主要使用在浏览器上,用来精确度量Web页面上的内容。

设备像素比(device pixel ratio)

设备像素比简称为dpr,定义了物理像素和设备独立像素的对应关系:设备像素比 = 物理像素 / 设备独立像素。

CSS的1px等于几个物理像素,除了和屏幕像素密度dpr有关,还和用户缩放有关系。例如,当用户把页面放大一倍,那么CSS中1px所代表的物理像素也会增加一倍;反之把页面缩小一倍,CSS中1px所代表的物理像素也会减少一倍。


移动端 1px 边框的解决方案

方案一

.border-1-bottom {
  box-shadow: inset 0px -1px 1px -1px #c8c7cc;
}

方案二

.border-1-bottom{
	position: relative;
}
.border-1-bottom:after{content: "";width: 100%;height: 1px;background: #ccc;position: absolute;left: 0;
	bottom: 0;transform: scaleY(0.5);transform-origin: center bottom;
}
/* 或者 */
.border-1-bottom:before {
	content: " ";
	position: absolute;
	left: 0;
	bottom: 0;
	width: 100%;
	height: 1px;
	border-bottom: 1px solid #ccc;
	color: #ccc;
	-webkit-transform-origin: 0 0;
	transform-origin: 0 0;
	-webkit-transform: scaleY(0.5);
	transform: scaleY(0.5);
}


方案三

/* 移动端 1px 边框 ------ 开始 */
.border-1,
.border-1-bottom,
.border-1-left,
.border-1-right,
.border-1-top,
.border-1-top-bottom {
	position: relative;
}

.border-1-bottom:after,
.border-1-left:after,
.border-1-right:after,
.border-1-top-bottom:after,
.border-1-top:after,
.border-1:after {
	content: ' ';
	pointer-events: none;
	box-sizing: border-box;
	-webkit-transform-origin: 0 0;
	position: absolute;
	left: 0;
	top: 0;
	transform-origin: 0 0;
	/* 多加 0.1%,能解决有时候边框缺失的问题 */
	width: 199.8%;
	height: 199.7%;
	transform: scale(0.5, 0.5);
	border: 0px solid #eee;
	z-index: 2;
}

.border-1-top:after {
	border-top-width: 1px;
}

.border-1-left:after {
	border-left-width: 1px;
}

.border-1-right:after {
	border-right-width: 1px;
}

.border-1-bottom:after {
	border-bottom-width: 1px;
}

.border-1-top-bottom:after {
	border-width: 1px 0;
}

.border-1:after {
	border-width: 1px;
}

/* 移动端 1px 边框 ------ 结束 */

写在末尾


如有不足,望大家多多指点! 谢谢!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 好的,我会尽力帮你。 HTML (Hypertext Markup Language) 是用来描述网页的一种语言。HTML 不是一种编程语言,而是一种标记语言 (markup language)。标记语言是一套标记标签 (markup tag),用来描述文档中的内容。 CSS (Cascading Style Sheets) 是一种样式表语言,用来描述 HTML 或 XML (包括如 SVG、HTML 之类的 XML 文档) 文档的呈现方式。 JavaScript 是一种轻量级的编程语言。它是设计用来给 HTML 网页增加交互性的。 要写一个移动端登录页面,你可以使用 HTMLCSS 和 JavaScript 来创建一个响应式的登录表单,并让它适应不同大小的屏幕。 以下是一个简单的登录页面的示例: HTML 代码: ``` <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>登录页面</title> </head> <body> <form id="login-form"> <label for="username">用户名:</label><br> <input type="text" id="username" name="username"><br> <label for="password">密码:</label><br> <input type="password" id="password" name="password"><br><br> <input type="submit" value="登录"> </form> </body> </html> ``` CSS 代码: ``` #login-form { width: 300px; margin: 0 auto; text-align: center; } #login-form label { display: block; margin-bottom: 8px; font-size: 18px; } #login-form input[type="text"], #login-form input[type="password"] { width: 80%; height: 32px; padding: 8px; border: 1px solid #ccc; ### 回答2: 要用HTMLCSS和JS编写一个移动端登录页面,首先,我们需要创建一个HTML文件,然后在文件中添加必要的HTML结构和内容。 在HTML文件中,我们可以使用<meta>元素设置视口尺寸,以确保页面适应移动设备的屏幕。然后,我们可以创建一个表单元素,用于用户输入用户名和密码。这可以通过<input>元素实现,设置不同的类型和属性来指定用户名和密码输入框。我们还可以添加一个提交按钮,供用户点击以提交登录表单。 接下来,我们可以使用CSS来为登录页面添加样式。我们可以使用选择器来选择特定的元素,然后使用CSS属性来定义它们的样式。例如,我们可以设置表单的边框、背景颜色和字体样式等。我们还可以使用媒体查询来调整页面布局和样式,以适应不同大小的移动设备。 最后,我们可以使用JavaScript来为登录页面添加交互功能。例如,我们可以使用JavaScript来验证用户输入的用户名和密码是否符合要求,或者在用户点击提交按钮时执行某些操作。我们可以使用事件监听器来侦听按钮点击事件,并在事件发生时触发相应的功能。 通过结合HTMLCSS和JS,我们可以创建一个移动端登录页面,并为其添加样式和交互功能,使其适应不同的移动设备。这样用户就可以在移动设备上方便地登录并使用网站或应用程序。 ### 回答3: 移动端登录页面可以使用HTMLCSS和JavaScript来实现。 首先,在HTML中创建一个登录页面的结构,可以使用`<form>`标签来包裹登录表单,包含用户名和密码的输入框以及提交按钮。可以使用`<input type="text">`来创建文本输入框和`<input type="password">`来创建密码输入框。 接下来,使用CSS样式给登录页面添加样式,使其适应移动设备。可以使用媒体查询来设置页面在不同屏幕尺寸下的样式。可以设置背景颜色、字体样式、边框等等,以及通过`@media`查询来调整页面布局。 然后,使用JavaScript来处理表单提交的事件。当用户点击提交按钮时,可以使用`addEventListener`方法监听提交事件,在事件处理函数中获取输入框中的用户名和密码,并进行验证。可以使用正则表达式或者其他方法来验证输入的合法性。如果验证通过,则可以跳转至用户的登录页面,或者显示登录成功的提示信息。 此外,可以使用JavaScript根据设备的屏幕尺寸动态调整页面布局和样式,以实现响应式设计。可以使用`window.onload`函数或者其他方法来检测屏幕尺寸,并进行相应的调整。 最后,可以在HTML中引入所需的CSS和JavaScript文件,以便页面正确显示和交互。 总的来说,使用HTMLCSS和JavaScript可以很方便地创建一个移动端登录页面。需要注意页面布局和样式的适应性以及输入验证的安全性。感谢您的提问,希望这个回答对您有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

zhuangvi

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

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

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

打赏作者

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

抵扣说明:

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

余额充值