最后的一像素。

1。 4个并排的正方形。

要求:四个正方形显示在一排,并且都一样大。适应多种不同手机宽的屏幕。

比如如果是320px宽的手机,正方形就是80*80的,如果是360宽的手机,正方形就是90*90的。

对于这样的需要试配的正方形我建议宽用百分比(%),高用rem来做。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
    <title>4个并排的正方形</title>
    <script>
        var width = window.screen.width;
          document.getElementsByTagName("html")[0].style.fontSize = (width*0.0625) + "px";
    </script>
    <style>
        *{
            border: none;
            padding: 0px;
            margin: 0px;
        }
        .square{
            box-sizing: border-box;
            float: left;
            width: 25%;
            height:4rem;
            border: 1px solid blue;
        }
    </style>
</head>
<body>
    <div style="width:100%;">
        <div class="square"></div>
        <div class="square"></div>
        <div class="square"></div>
        <div class="square"></div>
    </div>
</body>
</html>

2。 3块并排包含一像素的分隔线。

老规矩,三个正方形一排,中间两根分隔线都是1px。如果是320宽的屏,320-2=318,  318/3=106,所以正方形的大小是106*106。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
    <title>3块并排包含一像素的分隔线</title>
    <script>
        var width = window.screen.width;
          document.getElementsByTagName("html")[0].style.fontSize = (width*0.0625) + "px";
    </script>
    <style>
        *{
            border: none;
            padding: 0px;
            margin: 0px;
        }
        .square_box{
            box-sizing: border-box;
            width:100%;
            padding-left: 2px;
        }
        .square{
            box-sizing: content-box;
            float: left;
            width: 33.333333%; /*硬是在小数点后面加了6个3,chrome才把320屏宽时,算成了正方形107 */
            height: 5.3rem;
            border-right: 1px solid blue;
            background: grey;
        }
    </style>
</head>
<body>
    <div class="square_box">
        <div class="square" style="margin-left:-2px;"></div>
        <div class="square"></div>
        <div class="square" style="border:none;"></div>
    </div>
</body>
</html>

效果图

做一个简单说明:

因为第1块和第2块都是有一个右边框的,所以图中显示它的宽是107px。三个块的内容都是106*106的正方形。

题外话:

其实,有时候觉得设计师不要太纠结1像素。我举一个例子,比如一个320px宽的手机屏,如果你想设计像上面一样的4个正方形的吧,有3个分隔线,就是320-3=317,然后每一个正方形就是317/4=79.25px

已经有小数点了。要知道安卓的屏宽可是什么大小都有的。

当然了,我上面的代码其实已经保障精度是1px以后了,我把chrome的屏宽改为360px后。正方形的宽可以精确到119.328

3. vertical-align: middle;并不是真正的中间对齐。有几个像素的偏差,当然了,一般用户看不出来,如果是设计师(专业的)的话,一眼就看出来了。

我现在一般用vertical-align: -xxx%, 这个比例到手动是调,眼去看(有必要的话,借助一下工具截图测量)。

这个比例的算法很复杂,有line-height有font-size有关,但是我把这两个参数代进去算了,感觉还是有偏差,如果大神有好的算法,告诉我吧,qq714008456, 多交朋友嘛。

时间: 2024-10-12 09:27:10

最后的一像素。的相关文章

HTML5 Canvas ( 图形的像素操作 ) getImageData, putImageData, ImgData.data

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>canvas</title> <script type="text/javascript" src="../js/jQuery.js"></script> <style type="text/css">

OpenCV 访问Mat 像素

场景 在进行烟雾检测的过程中,需要访问Mat指定区域的像素值,然后判断是否符合烟雾的像素特征(当然,在网上查询到的烟雾像素特征,实际上,并没有正确识别出烟雾),可通过如下的方式进行操作 int  similarDegree = 0; int channel = srcMat.channels(); for (int i=info.smokeLeftTopPos.y; i<maxHeight; i++) { for (int j=info.smokeLeftTopPos.x; j<maxWidt

设备像素比dpr介绍

首先介绍一下概念 devicePixelRatio其实指的是window.devicePixelRatio window.devicePixelRatio是设备上物理像素和设备独立像素(device-independent pixels (dips))的比例. 公式表示就是:window.devicePixelRatio = 物理像素 / dips 好了,到了这里有出来了两个概念,物理像素 和  dips 物理像素,比较好理解,一个物理像素是显示器(手机屏幕)上最小的物理显示单元,在操作系统的调

U3D屏幕坐标,世界坐标,像素坐标之间的关系

U3D中,屏幕坐标和世界坐标单位一样,二者之间是直接的一一对应关系,不受屏幕分辨率影响.默认情况下屏幕空间画布的左下角坐标是世界原点(0,0,0),这种情形下,世界空间的点(1920,1080,任何值)就对应屏幕上的点(1920,1080,0). sprite的大小是由实际图片的像素确定的,如512X512的图片放到sprite上,sprite的大小是5.12X5.12.即:默认情况下3D空间中1=100像素,这个是可以在每张图片导入设置中设定的. 由此,可见,屏幕分辨率代表的是游戏窗口能看到的

android-getTextSize返回值是以像素(px)为单位的,setTextSize()以sp为单位

使用如下代码时,发现字号不会变大,反而会变小:size = (int) mText.getTextSize() + 1;mText.setTextSize(size);后来发现getTextSize返回值是以像素(px)为单位的,而setTextSize()是以sp为单位的,两者单位不一致才造成这样的结果. 这里可以用setTextSize()的另外一种形式,可以指定单位:setTextSize(int unit, int size)TypedValue.COMPLEX_UNIT_PX : Pi

图像像素的获取和操作(第三天)

图像处理顾名思义就是对图像的像素进行操作,这是核心基础! 有三种方法对图像的操作:(图像像素的获取参差在其中) 第一种:使用指针进行操作 这个指针在上一篇博文中已经提到,这节博文进行加深理解. 先讲解opencv的指针应用: 1 Mat image = cv::Mat(400, 600, CV_8UC3); //宽400,长600,3通道彩色图片 rows=400,cols=600 2 uchar * data000 = image.ptr<uchar>(0);//第一行第一个元素地址 3 u

根据图片的像素 手势穿透问题

新建一个UIImageView的子类. 并重写 : -(BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event{ unsigned char pixel[1] = {0}; CGContextRef context = CGBitmapContextCreate(pixel, 1, 1, 8, 1, NULL, kCGImageAlphaOnly); UIGraphicsPushContext(context); [self.imag

ArcGIS for Android地图上实际距离与对应的屏幕像素值计算

/** * 将实际地理距离转换为屏幕像素值 * * @param distance * 实际距离,单位为米 * @param currScale * 当前地图尺寸 * @param context * @return */ public static double metreToScreenPixel(double distance, double currScale, Context context) { float dpi = context.getResources().getDispla

python PIL比较图片像素

1 # -*- coding: utf-8 -*- 2 3 from PIL import Image 4 from pylab import * 5 6 def compare_pic_L(pic1,pic2): 7 #打开第一张图片 8 im1 = Image.open(pic1).convert('L') 9 print im1.format ,im1.size, im1.mode 10 11 #像素值转数组 12 aim1 = np.transpose(array(im1)) 13 #i

DICOM图像像素值(灰度值)转换为CT值

CT值的单位是Hounsfield,简称为Hu,范围是-1024-3071.用于衡量人体组织对X射线的吸收率,设定水的吸收率为0Hu. 在DICOM图像读取的过程中,我们会发现图像的像素值有可能不是这个范围,通常是0-4096,这是我们常见到的像素值或者灰度值,这就需要我们在图像像素值(灰度值)转换为CT值. 首先,需要读取两个DICOM Tag信息,(0028|1052):rescale intercept和(0028|1053):rescale slope. 然后通过公式: Hu = pix