超出显示省略号css
p{text-overflow:ellipsis;overflow:hidden;}
white-space: normal|pre|nowrap|pre-wrap|pre-line|inherit;html
white-space 属性设置如何处理元素内的空白 normal 默认。空白会被浏览器忽略。 pre 空白会被浏览器保留。其行为方式相似 HTML 中的 pre 标签。 nowrap 文本不会换行,文本会在在同一行上继续,直到遇到 br 标签为止。 pre-wrap 保留空白符序列,可是正常地进行换行。 pre-line 合并空白符序列,可是保留换行符。 inherit 规定应该从父元素继承 white-space 属性的值。
word-wrap: normal|break-word;web
word-wrap 属性用来标明是否容许浏览器在单词内进行断句,这是为了防止当一个字符串太长而找不到它的天然断句点时产生溢出现象。 normal: 只在容许的断字点换行(浏览器保持默认处理) break-word:在长单词或URL地址内部进行换行
word-break 属性用来标明怎么样进行单词内的断句。浏览器
normal:使用浏览器默认的换行规则。 break-all:容许再单词内换行 keep-all:只能在半角空格或连字符处换行
强制不换行app
span { dispalay: inline-block; overflow: hidden; /* 超出部分隐藏 */ text-overflow: ellipsis; /* 若是内容超出显示为省略号 */ white-space: nowrap; /* 强制不换行 */ }
CSS自动换行ide
span { dispalay: inline-block; word-break: normal; /* 自动换行 */ }
强制断行函数
span { dispalay: inline-block; word-break:break-all; /* 强制英文单词断行 */ }
@media (min-width: 768px) { .main { width: 25%; float: left; } }
link rel="stylesheet" type="text/css" media="screen and (min-width: 400px) and (max-device-width: 600px)" href="smallScreen.css" />
因为网页会根据屏幕宽度调整布局,因此尽量的使用百分比布局
设计稿给什么尺寸,咱们就将其缩小100倍,最后换算成rem单位。好比,设计稿上某个title的font-size为32px,此时写CSS样式时就直接缩小100倍,即0.32rem。字体
(不一样设备的理想视口宽度 / 基准值(即设计稿横向像素) * 100) (单位px)
1(单位rem)
= html根元素的font-size
= 不一样设备的理想视口宽度 / 基准值(即设计稿横向像素) * 100 (单位px)
时,html元素的具体尺寸 = 设计稿尺寸 / 100 (单位rem)<meta name="viewport" content="width=device-width, initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0,user-scalable=0"> //orientationchange方向改变事件 (function (doc, win) { var docEl = doc.documentElement,//根元素html //判断窗口有没有orientationchange这个方法,有就赋值给一个变量,没有就返回resize方法。 resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize'; recalc = function () { var clientWidth = document.documentElement.clientWidth; if (!clientWidth) return; if(clientWidth > 1080) clientWidth = 1080; //把document的fontSize大小设置成跟窗口成必定比例的大小,从而实现响应式效果。 docEl.style.fontSize = 20 * (clientWidth / 1080) + 'px'; // 1080 为UI给的设计稿横向像素 }; if (!doc.addEventListener) return; win.addEventListener(resizeEvt, recalc, false); //addEventListener事件方法接受三个参数:第一个是事件名称好比点击事件onclick,第二个是要执行的函数,第三个是布尔值 doc.addEventListener('DOMContentLoaded', recalc, false)//绑定浏览器缩放与加载时间 })(document, window);
let dpr = window.devicePixelRatio; let meta = document.createElement('meta'); let initialScale = 1 / dpr; let maximumScale = 1 / dpr; let minimumScale = 1 / dpr; meta.setAttribute('name', 'viewport'); meta.setAttribute('content', `width=device-width, user-scalable=no, initial-scale=${initialScale}, maximum-scale=${maximumScale}, minimum-scale=${minimumScale}`); document.head.appendChild(meta); 所以,能够直接根据设计稿的尺寸写CSS样式,如设计稿下有5个li元素,宽度为200px,此时不一样设备下li的宽度 iPhone5 : li { width: 200px } 实际宽度为:100px iPhone6 : li { width: 200px } 实际宽度为:100px iPhone6+: li { width: 200px } 实际宽度为:66.667px
var clientWidth = document.documentElement.clientWidth; if (!clientWidth) return; if(clientWidth > 1080) clientWidth = 1080; document.documentElement.style.fontSize = clientWidth / 10 + 'px';
SASS @baseFontSize: 75;//基于视觉稿横屏尺寸/100得出的基准font-size @function px2rem ($value) { $para: 75px; @return $value / @baseFontSize+ rem; } JS // 设置根元素的font-size。经过获取不一样设备的理想视口宽度,再除以10。(除以10是由于不想font-size太大。) let idealViewWidth = window.screen.width; document.documentElement.style.fontSize = idealViewWidth / 10 + 'px'; 在不一样设备下根元素的`font-size`: iPhone5 : 320px / 10 = 32px iPhone6 : 375px / 10 = 37.5px iPhone6+: 414px / 10 = 41.4px 根据以上,能够看一个例子。某设计稿下5个li,横向排布,每一个的宽度为200px CSS @import (路径名) iPhone5: li { width: px2rem(200px) } => width: 85.333px // 此时(200px / 75px = 2.667rem) 2.667rem = 2.667 * (320 / 10) = 85.3333px iPhone6: li { width: px2rem(200px) } => width: 100px // 此时(200px / 75px = 2.667rem) 2.667rem = 2.667 * (375 / 10) = 100px iPhone6+: li { width: px2rem(200px) } => width: 4138px // 此时(200px / 75px = 2.667rem) 2.667rem = 2.667 * (414 / 10) = 110.4138px 所以,一个200px的(实际只有100px)的li元素的宽度在不一样设备下显示了不一样的宽度,实现了响应式适配的问题。
参照 (二、移动端自适应-设置视口缩放)内容,能够像PC web页面同样设置1pxidea
上边缘框
.border-top-1px { position: relative; } .border-top-1px:before { position: absolute; content: ''; -webkit-transform-origin: 0 0; transform-origin: 0 0; -webkit-transform: scaleY(0.5); transform: scaleY(0.5); top: 0; left: 0; width: 100%; border-top: 1px solid green; z-index: 10; }
下边缘框
.border-bottom-1px { position: relative; } .border-bottom-1px:before { content: ''; position: absolute; bottom:0; left:0; width: 100%; border-bottom: 1px solid green; -webkit-transform-origin: 0 0; transform-origin: 0 0; -webkit-transform: scale(0.5, 0.5); transform: scale(0.5, 0.5); -webkit-box-sizing: border-box; box-sizing: border-box; }
四边框
.border-1px { position: relative; } .border-1px input { position: relative; width: 100%; height: 30px; padding: 0 10px; border: none; outline: none; text-overflow: ellipsis; background: transparent; } .border-1px:before { content: ''; position: absolute; width: 200%; height: 200%; border: 1px solid #000; -webkit-transform-origin: 0 0; -moz-transform-origin: 0 0; -ms-transform-origin: 0 0; -o-transform-origin: 0 0; transform-origin: 0 0; -webkit-transform: scale(0.5, 0.5); -ms-transform: scale(0.5, 0.5); -o-transform: scale(0.5, 0.5); transform: scale(0.5, 0.5); -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; }
媒体查询实现
.border-bottom{ position: relative; border-top: none !important; } .border-bottom::after { content: " "; position: absolute; left: 0; bottom: 0; width: 100%; height: 1px; background-color: #e4e4e4; -webkit-transform-origin: left bottom; transform-origin: left bottom; } /* 2倍屏 */ @media only screen and (-webkit-min-device-pixel-ratio: 2.0) { .border-bottom::after { -webkit-transform: scaleY(0.5); transform: scaleY(0.5); } } /* 3倍屏 */ @media only screen and (-webkit-min-device-pixel-ratio: 3.0) { .border-bottom::after { -webkit-transform: scaleY(0.33); transform: scaleY(0.33); } }
http://caibaojian.com/mobile-...
https://www.cnblogs.com/uncle...