微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!
first专题提供first的最新资讯内容,帮你更好的了解first。
那些年踩过的坑之:first-child伪类选择器
:first-child 选择器用于选取属于其父元素的首个子元素的指定选择器。——w3school嗯,乍一看好像说的不是很明白,因此这个选择器很容易让人误解,通常会有两种误解:误解一:认为E:first-child选中E元素的第一个子元素。误解二:认为E:first-child选中E元素的父元素的第一个E元素。你是不是也曾这样理解这个选择器或者现在仍然这样理解?以上两种理解都是错误的,为了证明上面两种理解是错的,看看下面的实例<!--误解一--><style>div:first-child{color: red;}</style><div class="demo"><a>一个链接</a><a>一个链接</a><a>一个链接</a><a>一个链接</a></div> 效果是这样的:很明显,照第一种理解,应该只有第一个a元素字体颜色变红,然而事实上全部变红了。<!--误解二--><style>div a:first-child{color: red;}</style><div class="demo"><p>一个段落</p><a>一个链接</a><a>一个链接</a><a>一个链接</a><a>一个链接</a></div> 效果是这样的:照第二种理解,div里的第一个a元素字体应该是红色的,事实证明这种理解也是错的。OK,正确的理解应该是:只要E元素是它的父级的第一个子元素,就选中。它需要同时满足两个条件,一个是“第一个子元素”,另一个是“这个子元素刚好是E”。<style>span:first-child{color: red;}p:first-child{color: blue;} /*p元素的父元素的第一个子元素是div而不是p元素,因此该样式不起作用*/i:first-child{color: orange;}</style><div class="demo"><div>.demo的第一个子元素是div</div><!--第一个span元素是它的父级P元素的第一个span,颜色变红色--><p><span>第一个span</span>第一个段落P<span>第二个span</span></p><!--第一个i元素是它的父级a元素的第一个i,颜色变橙色--><p>一个链接<i>第一个i元素</i></p><!--第二个i元素是它的父级a元素的第一个i,颜色变橙色--><p>一个链接<i>第二个i元素</i></p><p>一个链接</p></div>   效果:类似容易误解的结构选择器还有:nth-child()、:nth-last-child、:only-child,在平时的开发中需要注意一下。 By:王美建 from:http://www.cnblogs.com/wangmeijian/
Basic Tutorials of Redis(9) -First Edition RedisHelper
After learning the basic opreation of Redis,we should take some time to summarize the usage.And I wrote my first edition RedisHelper.Here is the code:The Interface IRedis:1 public interface IRedis2 {3 ITransaction GetTransaction(int db = 0, bool isRead = false);45 #region String6 #region get7 /// <summary>8 /// get the string value9 /// </summary>10 /// <param name="key">the key of value</param>11 /// <param name="flag">behaviour</param>12 /// <param name="db">index of database</param>13 /// <returns></returns>14 RedisValue Get(string key, CommandFlags flag = CommandFlags.None, int db = 0);15 /// <summary>16 /// get the string value(Asynchronous)17 /// </summary>18 /// <param name="key">the key of value</param>19 /// <param name="flag">behaviour</param>20 /// <param name="db">index of database</param>21 /// <returns></returns>22 Task<RedisValue> GetAsync(string key, CommandFlags flag = CommandFlags.None, int db = 0);23 /// <summary>24 /// get the entity by deserialization25 /// </summary>26 /// <param name="key">the key of value</param>27 /// <param name="flag">behaviour</param>28 /// <param name="db">index of database</param>29 /// <returns></returns>30 T Get<T>(string key, CommandFlags flags = CommandFlags.None, int db = 0);31 /// <summary>32 /// get the entity by deserialization(Asynchronous)33 /// </summary>34 /// <param name="key">the key of value</param>35 /// <param name="flag">behaviour</param>36 /// <param name="db">index of database</param>37 /// <returns></returns>38 Task<T> GetAsync<T>(string key, CommandFlags flags = CommandFlags.None, int db = 0);39 #endregion4041 #region set42 /// <summary>43 /// set value to key44 /// </summary>45 /// <param name="key">the key</param>46 /// <param name="value">the value of the key</param>47 /// <param name="expiry">time to expiry</param>48 /// <param name="when">when this operation should be performed</param>49 /// <param name="flags">behaviour</param>50 /// <param name="db">index of database</param>51 /// <returns></returns>52 RedisValue Set(string key, string value, TimeSpan? expiry = default(TimeSpan?), When when = When.Always, CommandFlags flags = CommandFlags.None, int db = 0);53 /// <summary>54 /// set value to key(Asynchronous)55 /// </summary>56 /// <param name="key">the key</param>57 /// <param name="value">the value of the key</param>58 /// <param name="expiry">time to expiry</param>59 /// <param name="when">when this operation should be performed</param>60 /// <param name="flags">behaviour</param>61 /// <param name="db">index of database</param>62 /// <returns></returns>63 Task<bool> SetAsync(string key, string value, TimeSpan? expiry = default(TimeSpan?), When when = When.Always, CommandFlags flags = CommandFlags.None, int db = 0);64 #endregion6566 #region mget67 /// <summary>68 /// get multi values69 /// </summary>70 /// <param name="keys">the keys of the values</param>71 /// <param name="flags">behaviour</param>72 /// <param name="db">index of database</param>73 /// <returns></returns>74 IList<RedisValue> MGet(List<RedisKey> keys, CommandFlags flags = CommandFlags.None, int db = 0);75 /// <summary>76 /// get multi values(Asynchronous)77 /// </summary>78 /// <param name="keys">the keys of the values</param>79 /// <param name="flags">behaviour</param>80 /// <param name="db">index of database</param>81 /// <returns></returns>82 Task<RedisValue[]> MGetAsync(List<RedisKey> keys, CommandFlags flags = CommandFlags.None, int db = 0);83 #endregion8485 #region mset86 /// <summary>87 /// set multi values88 /// </summary>89 /// <param name="kvs">key-values<