Posts
font-size与width
今天发现一个奇怪的问题
在移动端的时候,一个页面元素的font-size莫名其妙的比定义的大很多
用chrome查看生效的font-size: 16px; 但computed里的是30多px,怎么查也查不到是哪里导致的字体变化,而且该问题只发生在小屏幕中.
后来发现该元素需要定义width,可影响字体大小,但不能靠width来配置出指定大小的字体,而且也会影响实际宽度的显示.
http://stackoverflow.com/questions/15261315/calculated-font-size-on-nexus-7-chrome-is-different-from-css-font-size
后来按该解决方法,为该元素添加max-height: 1000px; 该元素的计算属性与定义属性总算相等.
之后看到http://stackoverflow.com/questions/11289166/chrome-on-android-resizes-font
这个问题叫font boosting,目前就是通过设置max-height或者meta viewport来解决.
Posts
window.open被浏览器拦截问题
在一个表单的提交事件中调用了window.open(”, ‘_blank’),被浏览器拦截.
几经调试发现,window.open放在ajax回调函数中就会被拦截,放在ajax之前就不会.
后来实验证实,只要不在当前的事件循环中执行,只要进入下一个事件循环都会被拦截.解决方法就是
先window.open,再在之后的回调中更改新打开的window的location来实现传递参数即可
Posts
有效阻止火狐自动填充密码
火狐会自动向type=password的input中填充当前域名已经记录的密码,
input的autocomplete=’off’,不灵
http://stackoverflow.com/questions/6487970/disable-firefoxs-auto-fill
说autocomplete=’off’要加到form上,也不灵
最后找了个方法,在需要阻止自动填充的input前面再加一个<input type=’password’ style=’display: none;’ />让火狐的自动填充填到这里好了.
Posts
非a或input元素的focus与blur
最近有用到改变元素状态的情况以前都用classList.toggle,要是能用focus和blur实现就好了,可是普通元素都不支持这两个事件.今天发现了tabindex这个属性,可以为普通元素添加这两个事件,tabindex设置为-1,即可使该元素通过程序或者点击获取焦点.在react中为tabIndex=’-1′
Posts
git autocrlf
昨天在家改了点vim配置,今天在单位用git pull了一下发现全是^M的语法错误
一开始不明所以还用dos2unix转了半天,
find . -type f -exec dos2unix {} ;
后来一提交发现自动变成crlf了,原来是git的autocrlf = true的问题,赶紧设置成false,并且设置eol = lf
Posts
transition与属性值为auto
当需要动画过度一些元素,而元素的内容为动态在如,因此不能事先确定元素的宽高,但需要动画效果来过度宽高的情况下.
改用max-width和max-height,只要将这两个值设置的很大即可.
例如
<br /> p {<br /> max-height: 0;<br /> transition: max-height 1s;<br /> }<br /> p.active {<br /> transition: max-height 1s;<br /> max-height: 10000px;<br /> }<br />
Posts
inline-block width:50%变成两行
当两个相邻元素的样式为 width: 50%,display: inline-block;
仍然不能排列成一行,原因是因为一般编辑html时,都会缩进换行来编辑使人便于阅读
但这样的话两个元素中间的换行就会产生宽度.
推荐用jade,开发时转html时加上pretty: false的参数,反正发布时也要压缩,和发布格式越接近越好.
Posts
user-select: none;
user-select: none;
会禁止用户选中内容,但在safari中也会同时组织输入.所以需要把input等排除出去.
*:not(input) {
user-select: none;
}
Posts
getBoundingClientRect的误差
今天调试一个元素,用getBoundingClientRect得到的left,始终比实际的left多一块.
后来发现是该元素的上级元素为了居中,使margin的左右都为auto,元素本身getBoundingClientRect得到的left即为正确的left加上了自动多出来的margin.
本来这个功能是配合一个position:fixed的样式用的,但是position:fixed出现混乱的错误,滚动后内容被莫名其妙的白色区域覆盖,好象是显卡错误那种像素滞留的问题,最后还是换position:absolute配合现计算的定位来做靠谱.
Posts
设置body height 100%
有一个footer需要设置始终在页面最下,一开始的时候总是会根据页面内容的高度自动上升.设置body height: 100%也没起作用.
后来确定了css方法如下