css 积累

各种理解

vh & vw
100vh = window.innerHeight
//即浏览器内容窗口的高度,不包括地址导航书签栏等
// (包括横向滚动条)
100vw = window.innerWidth
//即浏览器内容窗口的宽度
// (包括纵向向滚动条)
input 标签 type= button 时移动端点击出现光标

原因:input 有一个私有属性 user-modify:read-write-plaintext-only
解决:

input[type="button"] {
  -webkit-user-modify: read-plaintext-only;
  -moz-user-modify: read-plaintext-only;
  -ms-user-modify: read-plaintext-only;
  -ms-user-modify: read-plaintext-only;
  user-modify: read-plaintext-only;
}
BFC(Block Formatting Context)块级格式化上下文:

想做一个三栏布局的 demo,用到了清除浮动,发现不知为什么伪类的方法不行了,于是发现了这个东西。

产生:

  1. 元素 display 属性 table-cell, flex, flow-root 等等;
  2. 元素 position 属性不为 staticrelative;
  3. 元素 floate 属性不为 none;
  4. 元素 overflow 属性不为 visible
    作用:
  5. 清除内部元素的浮动,即自身宽高将包括内部的浮动元素,自己在文档中独立成一部分;
  6. 清除 margin 重叠,当父元素和子元素同时设置了外边距且父元素没有设置 borderpadding 时,父子元素外边距会发生重叠,BFC 会清除父子元素外边距的重叠效果。
图片文字一行展示垂直居中(此方法有时会偏差几像素,原因暂不知道,可用flex布局解决)

默认文字和图片的对其方式是图片和此行的基线对齐,即 vertical-align: base-line;该属性定义行内元素的基线相对于该元素所在行的基线的垂直对齐。 此时纵使你设置了文字的行高等于父元素的高度,文字也不会居中,因此应该设置图片的 css:vertical-align: middle;。即图片中线和父元素中线对齐。
点此查看更多 vertical-align 属性。

input 修改placeholder样式
::-webkit-input-placeholder {}  /* webkit 内核浏览器 */
:-moz-placeholder {}  /* ff4-18浏览器 */
::-moz-placeholder {}  /* ff19+浏览器 */
:-ms-input-placeholder {}  /* IE内核浏览器 */
input 修改光标颜色
-webkit-caret-color: #ccc;
caret-color: #ccc;
文本换行
<style>
    .s{
        width: 180px;
        padding: 10px;
        background-color: #46A0F0;
    }
</style>
<div>
    <div class="s">聪明聪明聪明聪明聪明聪明聪明聪明聪明聪明聪明聪明聪明聪明聪明</div>
    <div class="s">ffffffffffffffffffffffffffffffffffffffffffffffffff</div>
    <div class="s">asdf asdf asdf asdf asdf asdf fffffffffffffffffffffffff</div>
</div>

两种方法:

  1. word-wrap: normal | break-word
    word-wrap: normal

    word-wrap: break-word
  2. word-break: normal | break-all
    word-break: normal

    word-break: break-all

    方法对比(竖排相对于横排)
word-wrap: normal word-wrap: break-word word-break: normal word-break: break-all
word-wrap: break-word 1.中文同
2.英文一个单词:不会独占一行,会换行
3.英文多个单词:一行中最后一个单词不会被截断,会换行
英文多个单词:一行中最后一个单词不会被截断
word-break: break-all 英文多个单词:一行中最后一个单词会被截断 1.中文同
2.英文一个单词:不会独占一行,会换行
3.英文多个单词:一行中最后一个单词会被截断,会换行
文字 n 行打点(不兼容ff)
// 超出部分隐藏
overflow: hidden;
// 设置为 -webkit-box
display: -webkit-box;
// 设置垂直排列方式
-webkit-box-orient: vertical;
// 行数
-webkit-line-clamp: n;
文字单行打点
<style>
    .nobr{
        display: block;
        width: 100%;
        overflow: hidden;
        text-overflow: ellipsis;
    }
</style>
<nobr class="nobr">一段很长的文字一段很长的文字一段很长的文字一段很长的文字</nobr>

兼容性问题

border-radius:

只设置 input 左上左下 2px,右上右下不设置,浏览器中没问题、mx6手机浏览器没问题。iPhone5手机右上右下也会出现 2px 的圆角:解决右上右下要设置radius 为0;
calc()translate() 方法要考虑兼容性:加上前缀:-webkit- ;(对应的前缀还有:-moz- -ms- -0-);

input[type="button"]
  1. 当设置 disabled 属性为真时,ios会默认在样式上加一属性:opacity:0.4; 这会导致 android 和 ios 两端不一致。
    解决: input:disabled{opacity:1}
flex布局

ios8不支持 flex ,要加上兼容性前缀:-webkit-flex
且用各种属性的时候也要在属性前添加,例如:

-webkit-justify-content: space-between;
-webkit-flex:1;
input 内部光标高度兼容Safari浏览器

input 光标高度:
IE&Chrome&Firefox:不管该行有没有文字,光标高度与font-size大小一致。
Safari:没有设置行高时,获取到焦点后,光标光标高度和font-size大小一致
设置了行高时,获取到焦点后,光标和行高一致,输入内容后,光标高度为从行高顶部到文字底部
所以不应该在input中设置行高

IE 设置元素 z-index 但是元素仍会被底部文字或图片遮挡导致无法点击

偶遇一神奇 bug:absolute 定位的元素 A 设置 z-index: 10; 并添加一点击事件,在chrome浏览器中无问题,在ie(版本已到ie10)中,点击 A 下面的文字和图片无反应,即A的z-index并没有将其下面的元素覆盖掉,但是设置 A 背景色后,A 却会遮挡住其下面的元素,因此想到设置 A 的 css: background-color: rgba(0,0,0,0),但是仍没有反应,因为浏览器会将这一颜色转换为 background-color: transparent; 这时我们将其改为background-color: rgba(255, 255, 255, 0); 这时 A 便将下面的元素完全覆盖,点击 A 的任意位置都能触发 A 的点击事件

ios input框光标变粗

ios 兼容性 bug,先上 bug 图片:


image.png

经查,发现复现该 bug 的条件为:

  1. input 父元素设置定位且left或right设置百分比;
  2. input 框自身设置 padding-left 或者 padding-right (可以设置为0)。
    此时光标会变粗。图片代码如下:
    html:
<div class="f">
    <input type="text" class="s">
</div>

css:

.f{
     width: 80%;
     height: 164px;
     position: fixed;
     right: 10%;
     top: 10%;
 }

.s {
    width: 100%;
    height: 35px;
    background-color: #F8F8F8;
    border: 1px solid #CCCCCC;
    border-radius: 6px;
    font-size: 17px;
    padding-left: 10px;
    box-sizing: border-box;
}

当然,知道了复现条件,修改此bug也就简单了,只要刚刚上面所提任一条件缺失,则光标恢复正常,如下图:


image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,904评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,581评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,527评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,463评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,546评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,572评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,582评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,330评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,776评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,087评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,257评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,923评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,571评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,192评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,436评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,145评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,127评论 2 352