前面太自大了。。怎么能叫前端呢。
还只是重构一只呀。
Rating星星的CSS基本实现
html:
less:
首先是一个css属性:unicode-bidi: bidi-override;
CSS unicode-bidi 属性
定义
unicode-bidi 属性设置文本的方向。可能的值
normal
元素不会对双向算法打开附加的一层嵌套。对于行内元素,顺序的隐式重排会跨元素边界进行。
embed
如果是一个行内元素,这个值对于双向算法会打开附件的一层嵌套。这个嵌套层的方向由 direction 属性指定。会在元素内部隐式地完成顺序重排。这对应于在元素开始处增加一个 LRE(对于 direction:ltr :U+202A)或 RLE(对于 direction:rtl :U+202B),并在元素的最后增加一个 PDF(U+202C)。
bidi-override
这会为行内元素创建一个覆盖。对于块级元素,将为不在另一块中的行内后代创建一个覆盖。这说明,顺序重排在元素内部严格按照 direction 属性进行;忽略了双向算法的隐式部分。这对应于在元素开始处增加一个 LRO(对于 direction:ltr :U+202D)或 RLO(对于 direction:rtl :U+202E),并在元素最后增加一个 PDF(U+202C)。
啊我看不懂。
第二个:direction: rtl;
设置方向,rtl是right to left的意思。
第三个:~
选择器:CSS3 element1~element2 选择器
例如:p~ul
是为所有相同的父元素中位于 p 元素之后的所有 ul 元素设置样式;
这里还用了Font-Awesome
实现原理:
先写好基本的HTML结构,以及CSS,包括鼠标移上去的时候变成黄色。
然后CSS里面是没有选择某个元素之前的所有元素的选择器,只有向后选择,就是那个~
。但是我们变色是需要将前面的星星也变成黄色。
所以我们需要改变文本的方向:direction: rtl;
,改变之后就能实现对前面的i元素也变色的效果了。
不过这么做只是鼠标移上去的时候前面变色,要实现点击的时候固定颜色,还是要用到JS的:
我已经完全爱上这种写法了。。
当然做出来还需要给后台传值。
参考资料:Star Ratings With Very Little CSS
实际效果:Shop_Detail
重构一些笔记
最外层设置min-width
- 为了防止背景色背景图消失什么的,也可以避免在内层容器设置背景
使用雪碧图来绘制图标
- 好处多多:CSS雪碧
- 解决了用CSS3的兼容性,圆角什么的~
图标小移动使用雪碧图实现
.ico:hover{background-position: 0 -10px}
像这样,可以实现黑白然后变色的效果,可以加上transition
。
不使用浮动小技巧:一个设置padding-right,剩下一个使用绝对定位.
- 应用在一些小范围的地方,右边一般是一个小小的图片。此外还可以应用在列表项前的个性小图标,但是不是使用绝对定位,而是使用padding-left 见第九条
<em>
标签告诉浏览器把其中的文本表示为强调的内容。对于所有浏览器来说,这意味着要把这段文字用斜体来显示。- 在用的时候可以一开始就先重置这一类标签:
font-style:normal;font-weight:normal
这样可以利用这些内联标签来设置小图标,或者是文字效果。
- 在用的时候可以一开始就先重置这一类标签:
雪碧图:两个位置 background-position
- 两个属性值分别代表水平距离和纵向距离,使用负数。其余背景使用transparent透明,一般像这样:
background:url(../img/a.png) no-repeat scroll 0 -15px transparent;
- 两个属性值分别代表水平距离和纵向距离,使用负数。其余背景使用transparent透明,一般像这样:
使用padding-left 来放雪碧图,margin-left控制左右距离
IE7下面不支持a标签的Inherited。定义颜色还是直接定义吧。注意IE8下要写HTML5的兼容代码(Js)
给ul加上类,设置外边距和宽度,在li中设置高度,在a中设置内边距
横向列表最后一个没有边距的时候,可以取巧使用mr30这样单独的类来达到效果令table充满容器。自动调整每个单元格的大小
float:left
会使得元素变成块级元素对图像用
vertical-aligin:middle
消除一些奇怪的距离。不要把高度和padding设在一起啊啊啊啊啊
- 设计师会标出设计图里面的默认padding什么的,可以预先设计一个类比如
.p20``.p_20
表示padding:20px``padding:0 20px
之类的。 - 为什么我就是没遇到这种设计师呢啊啊啊啊啊每次量距离好想哭啊。
- 设计师会标出设计图里面的默认padding什么的,可以预先设计一个类比如
直接接触外层大容器的小容器不要使用margin-top会影响外层,没有间隔效果
- 解决办法:
overflow:hidden
或者设置父容器的padding border,随便一个为1像素。或者用padding-top代替。
- 解决办法:
使用浮动设置宽度
对a使用inline-block可以使得不会整块都有
cursor:pointer
.但如果要换行就需要使用br.否则就用block使用span作为容器放置图片时,可以使用tac来使之居中 但是需要设置span 为inline-block 设置宽度
横向图文混杂小块可以用dl dt(img) dd(h p)。
- 多个这样的东西可以多个dl。
这次笔记是在这个页面:你我贷
兼容性到IE6啊简直业界良心(其实就是我以前没有好好按规范打。。。。。)