前言  对于Box Model和Positioning Scheme中3种定位模式的细节,已经通过以下几篇文章记录了我对其的理解和思考.  <CSS魔法堂:重新认识Box Model.IFC.BFC和Collapsing margins>  <CSS魔法堂:你一定误解过的Normal flow>  <CSS魔法堂:Absolute Positioning就这个样>  <CSS魔法堂:说说Float那个被埋没的志向>  深入细节后会发现3中定位模式之间,Box…
前言  当CSS3推出border-radius属性时我们是那么欣喜若狂啊,一想到终于不用再添加额外元素来模拟圆角了,但发现border-radius还分水平半径和垂直半径,然后又发现border-top-left/right-radius的水平半径之和大于元素宽度时,实际值会按比例分配元素宽度时,不禁会问"我真的懂border吗?".本系列将稍微深入探讨一下那个貌似没什么好玩的border! <CSS魔法堂:重拾Border之--解构Border> <CSS魔法堂:…
前言  定位系统中第一难理解就是Normal flow,而第二就非Float莫属了,而Float难理解的原因有俩,1. 一开头我们就用错了:2. 它跟Normal flow靠得太近了.本文尝试理清Float的特性和行为特征,若有纰漏望各位指正. 被埋没的志向--文字环绕  回忆一下我们一般什么时候会想用浮动呢?是多列布局还是多列布局呢:)?其实它向往的却是这个  它想干的就是这个--文字环绕,而且CSS2中除了浮动外没有其他属性可实现上述的效果.  那到底如何理解它的实现原理呢?下面我们采取分步…
前言  刚接触CSS时经常听到看到一个词"文档流",那到底什么是"文档流"呢?然后会看到"绝对定位和浮动定位能脱离文档流",从这句可以看到文档流和绝对定位.浮动定位是同一个范畴的概念,再后来在W3C标准文档找到关于Absolute positioning和Float的内容,却怎么也找不到Document flow(文档流)的资料.后来终于知道是某位大神将Normal flow翻译为文档流而已......而我更偏好它的直译"常规流&quo…
前言 当我们以position:absolute之名让元素脱离Normal flow的控制后,以为通过left和top属性值即可让元素得以无限的自由时,却发现还有各种神秘的力量左右着它的来去,于是我们意识到自己力量的微弱,开始迷茫不前. 后来有幸拾到各路前辈高人的秘笈,终于打通任督二脉,记录在案以便日后查阅. 以Normal flow为基础 Q:不是说好以左上角为原点(0,0)吗?怎么top:auto;right:auto;bottom:auto;left:auto;时的效果和Normal fl…
前言 一直听说line-height是指两行文本的基线间的距离,然后又说行高等于行距,最近还听说有个叫行间距的家伙,@张鑫旭还说line-height和vertical-align基情四射,贵圈真乱啊......于是通过本篇来一探究竟:) line-height到底有多height? 行距.行间距傻傻分不清  首先看看"有道词典"的解析! Leading = Line Space + Font Size(即是 行距 = 行间距 + 字体大小) Leading: 指相邻文本行间上一个文本…
前言  <CSS魔法堂:重新认识Box Model.IFC.BFC和Collapsing margins>中提到在没有floated兄弟盒子时,line box的左右边框会与所属的containing block的左右content edge相接触.那到底什么是containing block(abbr. CB)呢?  containing block在CSS的visual formatting model中十分重要的理论基础,因为盒子的宽/高度自动值/相对值的计算,相对/浮动/绝对定位,均依…
前言 过去一直听说旧版本IE下很多诡异bug均由一个神秘角色引起的,那就是hasLayout.趁着最近突然发神经打算好好学习CSS,顺便解答多年来的疑惑. hasLayout到底是何方神圣? hasLayout可以简单看作是IE5.5/6/7中的BFC(Block Formatting Context).也就是一个元素要么自己对自身内容进行组织和尺寸计算(即可通过width/height来设置自身的宽高),要么由其containing block来组织和尺寸计算.而IFC(即没有拥有布局)而言,…
前言  说起box-shadow那第一个想法当然就是用来实现阴影,其实它还能用于实现其他好玩的效果的,本篇就打算说说box-shadow的那些事. 二话不说看效果 3D小球 <style type="text/css"> .ball{ background: rgba(100,100,100,0.2); width: 100px; height: 100px; padding: 10px; border-radius: 50%; box-shadow: -14px 8px…
前言  当CSS3推出border-radius属性时我们是那么欣喜若狂啊,一想到终于不用再添加额外元素来模拟圆角了,但发现border-radius还分水平半径和垂直半径,然后又发现border-top-left/right-radius的水平半径之和大于元素宽度时,实际值会按比例分配元素宽度时,不禁会问"我真的懂border吗?".本系列将稍微深入探讨一下那个貌似没什么好玩的border! <CSS魔法堂:重拾Border之--解构Border> <CSS魔法堂:…
前言  当CSS3推出border-radius属性时我们是那么欣喜若狂啊,一想到终于不用再添加额外元素来模拟圆角了,但发现border-radius还分水平半径和垂直半径,然后又发现border-top-left/right-radius的水平半径之和大于元素宽度时,实际值会按比例分配元素宽度时,不禁会问"我真的懂border吗?".本系列将稍微深入探讨一下那个貌似没什么好玩的border! <CSS魔法堂:重拾Border之--解构Border> <CSS魔法堂:…
前言 也许提及text-align你会想起水平居中,但除了这个你对它还有多少了解呢?本篇打算和大家一起来跟text-align来一次负距离的交往,你准备好了吗? text-align属性详解 The 'text-align' CSS property describes how inline content like text and inline-level element etc. is aligned in its parent block element.Does not control…
前言  在<CSS魔法堂:Transition就这么好玩>中我们了解到对于简单的补间动画,我们可以通过transition实现.那到底多简单的动画适合用transtion来实现呢?答案就是--我们只需定义动画起始和结束帧的状态的动画.一旦关键帧数大于2时,我们必须转向CSS Animation了.本文为这段时间学习的记录,欢迎拍砖. 简单粗暴介绍CSS Animation 规则和属性 定义关键帧动画 语法: @keyframes <Animation Name> { [<An…
前言  当CSS3推出border-radius属性时我们是那么欣喜若狂啊,一想到终于不用再添加额外元素来模拟圆角了,但发现border-radius还分水平半径和垂直半径,然后又发现border-top-left/right-radius的水平半径之和大于元素宽度时,实际值会按比例分配元素宽度时,不禁会问"我真的懂border吗?".本系列将稍微深入探讨一下那个貌似没什么好玩的border! <CSS魔法堂:重拾Border之--解构Border> <CSS魔法堂:…
前言  每当来个需要既要水平排版又要设置固定高宽时,我就会想起display:inline-block,还有为了支持IE5.5/6/7的hack*display:inline;*zoom:1;.然后发现盒子间无端端多了个不可选的空白符,于是想尽办法修复这个bug.  直到一天拜读了@一丝姐.@HAX等高人的秘笈后才顿悟,原来我错了.那不是bug,是我不懂而已. 先行者--IE5.5中的inline-block  当我们为支持IE5.5/6/7而添加这段hack时*display:inline;*…
前言  在CSS魔法堂:改变单选框颜色就这么吹毛求疵!中我们要模拟原生单选框通过Tab键获得焦点的效果,这里涉及到一个常常被忽略的属性--outline,由于之前对其印象确实有些模糊,于是本文打算对其进行稍微深入的研究^_^ Spec是这样描述它的 作用  用于创建可视对象的轮廓(元素的border-box),如表单按钮轮廓等. 与border不同 outline不占文档空间: outline不一定是矩形. 具体属性说明 /* 轮廓线颜色 * invert表示为颜色反转,即使轮廓在不同的背景颜色…
前言  还记得面试时被问起"请说说display:none和visibility:hidden的区别"吗?是不是回答完display:none不占用原来的位置,而visibility:hidden保留原来的位置后,面试官就会心一笑呢?其实不止那么简单呢!本文我们将一起深究它俩的恩怨情仇,下次面试时我们可以回答得更出彩! 深入display:none  我们都清楚当元素设置display:none后,界面上将不会显示该元素,并且该元素不占布局空间,但我们仍然可以通过JavaScript操…
前言  继上篇<CSS魔法堂:稍稍深入伪类选择器>记录完伪类后,我自然而然要向伪元素伸出"魔掌"的啦^_^.本文讲讲述伪元素以及功能强大的Contet属性,让我们可以通过伪元素更好地实现更多的可能! 初识伪元素  说起伪元素我第一想到的莫过于::before和::after这两个了,它俩其实就是在其附属的选择器命中的元素上插入第一个子节点和追加最后一个子节点.那这时我不禁地想问:"直接添加两个class为.before和.after不是一样的吗?"  其…
前言   盒子模型作为CSS基础中的基础,曾一度以为掌握了IE和W3C标准下的块级盒子模型即可,但近日在学习行级盒子模型时发现原来当初是如此幼稚可笑.本文尝试全面叙述块级.行级盒子模型的特性.作为近日学习的记录. 何为盒子模型?    盒子模型到底何方神圣居然可以作为CSS的基础?闻名不如见面,上图了喂!  再来张切面图吧!  下面我们以 <div></div> 为栗子. <div></div> 标签被浏览器解析后会生成div元素并添加到document t…
CSS Tables border border: border-width border-style border-color|initial|inherit; border-width border-width: medium|thin|thick|length|initial|inherit; border-style border-style:none|hidden|dotted|dashed|solid|double|groove|ridge|inset|outset|initial|…
本文讨论的是块级盒子(Block-level box)的盒子模型(Box Model) 一.W3C标准的盒子模型   二.IE盒子模型 三.两种模型的区别 W3C标准盒子模型: 外盒模型 元素空间宽度 = content width + padding + border + margin的宽度 元素空间高度 = content width + padding + border + margin的高度 内盒模型 元素宽度 = content height + padding + border的宽度…
css中有一个盒子模型的概念. 主要是用来告诉浏览器如何来计算页面元素的宽度和高度, 比如该元素的宽度/高度 是否包括内边距,边框,外边距.  盒子模型有一个属性box-sizing属性来说明是否包括以及具体包括啥内容 我们先来看一个图 Content Edge => 是元素所在的内容区域,它有一个宽度和高度 Padding Edge => 内边距 Border Edge => 边框 Margin Edge => 外边距 所以,在css中,我们设置一个元素的width 和 heig…
盒子模型(Box Model)是 CSS 的核心,现代 Web 布局设计简单说就是一堆盒子的排列与嵌套,掌握了盒子模型与它们的摆放控制,会发现再复杂的页面也不过如此. 然而,任何美好的事物都有缺憾,盒子模型有两种不同的诠释,一种来自 IE6,一种来自W3C 标准浏览器. 盒子模型 下图就是一个典型的盒子模型示意图 在内容区外面,依次围绕着 padding 区,border 区,margin 区,这一模型结构在所有主流浏览器都是一致的. 通过盒子模型,我们可以为我们的内容设置边界,留白以及边距,盒…
一.前言 假如只是开发简单的弹窗效果,懂得通过z-index来调整元素间的层叠关系就够了.但要将多个弹窗间层叠关系给处理好,那么充分理解z-index背后的原理及兼容性问题就是必要的知识储备了.本文作为对W3C Recommendation-Layered presentation学习后整理的笔记,以便日后查阅. 由于将英文名词翻译为中文名词容易产生歧义(如Normal flow被翻译为文档流),因此本文将直接采用原英文名词,而涉及到的英文名词解释如下: non-positioned eleme…
一.前言 文字承载着站点内涵,而良好的字体.排版则为用户提供舒适的阅读体验.本文打算对字体稍微深入一下子网页字体的内容,若有纰漏请大家指正,谢谢! 目录一坨: 二, 字体分类 1. 衬线体(Serif) 2. 无衬线体/非衬线体(Sans-Serif) 3. 等宽体(Monospace) 4. 手写体/书法体(Calligraphy)    5. 符号体(Symbol) 三, 再识font-family    1. 认识font-family样式属性值 2. 浏览器的默认字体    3. 为何要…
前言  是否曾经被业务提出"能改改这个单选框的颜色吧!让它和主题颜色搭配一下吧!",然后苦于原生不支持换颜色,最后被迫自己手撸一个凑合使用.若抛开input[type=radio]重新开发一个,发现要模拟选中.未选中.不可用等状态很繁琐,而涉及单选框组就更烦人了,其实我们可以通过label.::before.:checked和tabindex,然后外加少量JavaScript脚本就能很好地模拟出一个样式更丰富的"原生"单选框.下面我们一起来尝试吧! 单选框了解一下…
前言  以前说起前端动画必须使用JS,而CSS3为我们带来transition和@keyframes,让我们可以以更简单(声明式代替命令式)和更高效的方式实现UI状态间的补间动画.本文为近期对Transition的学习总结,欢迎各位拍砖. 属性介绍  首先先我们简单粗暴了解transition属性吧! transition: <transition-property> <transition-duration> <transition-timing-function>…
前言  Flex是Flexible Box的缩写,就是「弹性布局」.从2012年已经面世,但由于工作环境的原因一直没有详细了解.最近工作忙到头晕脑胀,是要学点新东西刺激一下大脑,打打鸡血. Flex就这么简单 浏览器兼容性  一说到兼容性就是永远的痛,不过幸运的是只要在IE10加-ms-前缀就可以用啦^_^ 涉及的对象  Flex布局主要是操作Flex Container 和 Flex Item两类对象. Flex Container为作为布局容器拥有main axis,main start,m…
下列样式规则可用于最小化各浏览器标签样式的不一致性.注意:实际使用时应该对其进行适当的调整,以适应项目要求. /* http://meyerweb.com/eric/tools/css/reset/ v2.0 | 20110126 License: none (public domain) */ html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, a…
一.Position各属性值详解   1.  static :默认值,元素将按照正常文档流规则排列.   2.  relative :相对定位,元素仍然处于正常文档流当中,但可以通过left.top.right和bottom的CSS规则来改变元素的位置. 注意点:[a]. 元素原来位置将保留,不被其他元素所占据; [b]. 当使用left,top改变元素位置时,元素将以原来位置的border外边框的左上角作为参考点 ; [c]. 当使用right.top时改变元素位置时,元素将以原来位置的bor…