<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Web on 古思乱想</title><link>https://blog.gusibi.site/categories/web/</link><description>Recent content in Web on 古思乱想</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Mon, 29 Apr 2019 21:05:57 +0800</lastBuildDate><atom:link href="https://blog.gusibi.site/categories/web/index.xml" rel="self" type="application/rss+xml"/><item><title>JWT RefreshToken 实践</title><link>https://blog.gusibi.site/post/jwt-refresh-token/</link><pubDate>Mon, 29 Apr 2019 21:05:57 +0800</pubDate><guid>https://blog.gusibi.site/post/jwt-refresh-token/</guid><description>jwt refresh token</description></item><item><title>CSS入门指南-3：定位元素</title><link>https://blog.gusibi.site/post/css-learing-3-positioning-elements/</link><pubDate>Wed, 26 Jul 2017 22:21:49 +0800</pubDate><guid>https://blog.gusibi.site/post/css-learing-3-positioning-elements/</guid><description>&lt;blockquote&gt;
&lt;p&gt;这是《CSS设计指南》的读书笔记，用于加深学习效果。
前一篇&lt;a href="https://mp.weixin.qq.com/s?__biz=MzAwNjI5MjAzNw==&amp;amp;mid=2655752018&amp;amp;idx=1&amp;amp;sn=6915e4f11ba08fa196a64375224cd92e&amp;amp;chksm=80b0b878b7c7316e1a065ae991c534cc11ca5fe72b33690a98fb1c3f6f53f8c98c4c8744cd3a#rd"&gt;CSS入门指南-2：盒子模型、浮动和清除&lt;/a&gt;介绍了css盒子模型、浮动和清除，这一篇介绍 css元素的定位。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="定位position"&gt;定位（position）&lt;/h2&gt;
&lt;p&gt;CSS 布局的核心是 position 属性，对元素盒子应用这个属性，可以相对于它在常规文档流中的位置重新定位。
position 属性有4个值：&lt;code&gt;static&lt;/code&gt;、&lt;code&gt;relative&lt;/code&gt;、&lt;code&gt;absoulte&lt;/code&gt;、&lt;code&gt;fixed&lt;/code&gt;，默认值为 static。&lt;/p&gt;
&lt;p&gt;接下来我会用以下四个段落来逐个说明这些属性是什么意思。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;p&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;id&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;first&amp;#34;&lt;/span&gt;&amp;gt;First Paragraph&amp;lt;/&lt;span style="color:#f92672"&gt;p&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;p&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;id&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;Second&amp;#34;&lt;/span&gt;&amp;gt;Second Paragraph&amp;lt;/&lt;span style="color:#f92672"&gt;p&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;p&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;id&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;specialpara&amp;#34;&lt;/span&gt;&amp;gt;Third Paragraph&amp;lt;/&lt;span style="color:#f92672"&gt;p&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;p&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;id&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;fourth&amp;#34;&lt;/span&gt;&amp;gt;First Paragraph&amp;lt;/&lt;span style="color:#f92672"&gt;p&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="静态定位static"&gt;静态定位（static）&lt;/h3&gt;
&lt;p&gt;我们先看一下四个段落都采用静态定位的效果。&lt;/p&gt;
&lt;p&gt;&lt;img alt="四段都采用静态定位的图示" loading="lazy" src="http://media.gusibi.mobi/R_7xrRQEA1TEc4S1GJsxwpfz99rx6nvnb0KZNOc1m-D5P8bdMAq-mQsvZ85xxMSb"&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;静态定位下，每个元素在处在常规文档流中，它们都是块级元素，所以会在页面中自上而下地堆叠。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="相对定位relative"&gt;相对定位（relative）&lt;/h3&gt;
&lt;p&gt;现在我把第三段的 position 属性设置为 relative。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;p&lt;/span&gt;#specialpara {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;position&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;relative&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;top&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;25&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;px&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;left&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;30&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;px&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;因为相对定位&lt;code&gt;相对的是它原来在文档流中的位置（默认位置）&lt;/code&gt;，所以如果只设置 position 样式不会有任何变化。这里我同时设置了 top 和 left 属性来改变它的位置。&lt;/p&gt;
&lt;p&gt;现在它的效果如图所示：&lt;/p&gt;
&lt;p&gt;&lt;img alt="第三段使用相对定位的效果图" loading="lazy" src="http://media.gusibi.mobi/5OFF-2lXXl-JAY4tUuAl0V3Z5q6livJzUz11Fs7N8nIbz9mYgGp8GlzA6oM6_U9J"&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;现在，第三段从原来的元素（body）中挣脱了出来，与它在文档中的默认位置相比向下移动了25像素，向右移动了30像素。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;需要注意的是，除了这个元素自己相对于原始位置挪动了一下以外，页面没有任何改变。这个元素原来占据的空间没有动，其他元素也没动。&lt;/p&gt;
&lt;p&gt;这时，如果不想第四段被它挡住，可以给第四段设置一个 margin-top 值。&lt;/p&gt;
&lt;h3 id="绝对定位absoulte"&gt;绝对定位（absoulte）&lt;/h3&gt;
&lt;p&gt;绝对定位跟静态定位和相对定位相比，它会把元素彻底从文档流中拿出来。&lt;/p&gt;
&lt;p&gt;我们把 position 改为绝对定位看一下：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;p&lt;/span&gt;#specialpara {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;position&lt;/span&gt;: absoulte;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;top&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;25&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;px&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;left&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;30&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;px&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;效果如图：&lt;/p&gt;
&lt;p&gt;&lt;img alt="第三段使用绝对定位的效果图" loading="lazy" src="http://media.gusibi.mobi/2-U0Y3OwzCz9gOLmV-LF96-U1nnRhPUjvX6InOVjCfPo9vWCqwx0d_mQlmsFCkWL"&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;可以看到，第三段原来的位置被回收了。这说明绝对定位的元素脱离了常规文档流，它现在是相对于顶级元素 body 在定位。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;现在就涉及到一个概念：&lt;code&gt;定位上下文&lt;/code&gt;，这个后边说，先继续看最后一种定位方式：&lt;code&gt;固定定位&lt;/code&gt;。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;盒子位移属性是如何工作？&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;盒子的位移属性有四个“top、right、bottom和left”，用来指定元素的定位位置和方向。这些属性只能在元素的“position”属性设置了“relative、absolute和fixed”属性值，才生效。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;对于相对定位元素，这些属性的设置让元素从默认位置移动。例如，top设置一个值“20px”在一个相对定位的元素上，这个元素会在原来位置向下移动“20px”。&lt;/p&gt;</description></item><item><title>理解JWT（JSON Web Token）认证及实践</title><link>https://blog.gusibi.site/post/how-to-use-json-web-token-and-python-practice/</link><pubDate>Sun, 23 Jul 2017 21:05:57 +0800</pubDate><guid>https://blog.gusibi.site/post/how-to-use-json-web-token-and-python-practice/</guid><description>description</description></item><item><title>CSS入门指南-2：盒子模型、浮动和清除</title><link>https://blog.gusibi.site/post/css-learing-2-box-model-float-and-clear/</link><pubDate>Wed, 19 Jul 2017 22:22:49 +0800</pubDate><guid>https://blog.gusibi.site/post/css-learing-2-box-model-float-and-clear/</guid><description>&lt;blockquote&gt;
&lt;p&gt;这是CSS设计指南的读书笔记，用于加深学习效果。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;上一篇介绍了css 的工作原理，这一篇主要介绍&lt;code&gt;盒子模型&lt;/code&gt;和&lt;code&gt;浮动&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id="盒子模型"&gt;盒子模型&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;所谓盒子模型，就是浏览器为页面中的每个HTML元素生成的矩形盒子。这些盒子们都要按照可见版式模型在页面上排布。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;HUGOMORE42&lt;/p&gt;
&lt;p&gt;可见的页面版式主要由三个属性控制：position、display和float。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;position：控制页面上元素的位置关系&lt;/li&gt;
&lt;li&gt;display：控制元素是堆叠、并排还是不在页面出现&lt;/li&gt;
&lt;li&gt;float：提供控制的方式，以便吧元素组成多栏布局&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;元素盒子的属性可以分成三组：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;边框(board)。可以甚至边框的宽窄、样式和颜色&lt;/li&gt;
&lt;li&gt;内边距(padding)。可以甚至盒子内容区与边框的间距&lt;/li&gt;
&lt;li&gt;外边距(margin)。可以设置盒子与相邻元素的间距&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img alt="盒模型示意图展示了HTML元素的边框、内边距和外边距之间的关系" loading="lazy" src="http://omuo4kh1k.bkt.clouddn.com/4J2VDi7TIFFuSOVgWp-3uuDrzvYh7oMDxeNv5OxgpaQoUGlHPo8tL43fAa5iheKn"&gt;&lt;/p&gt;
&lt;p&gt;元素盒子还有一个背景层，可以改变颜色，也可以添加图片。&lt;/p&gt;
&lt;h3 id="简写样式"&gt;简写样式&lt;/h3&gt;
&lt;p&gt;CSS为边框、内边距和外边距分别规定了简写属性，每个简写声明中，属性值得顺序都是上、右、下、左。&lt;/p&gt;
&lt;p&gt;比如：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;margin-top&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;5&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;px&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;margin-right&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;10&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;px&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;margin-bottom&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;12&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;px&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;margin-left&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;8&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;px&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;使用简写则为这样：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;margin&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;12&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;px&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;10&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;px&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;12&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;px&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;8&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;px&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;如果有一个值没写，那么则使用对边的值。&lt;/p&gt;
&lt;p&gt;比如：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&lt;span style="color:#66d9ef"&gt;margin&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;12&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;px&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;10&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;px&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;12&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;px&lt;/span&gt;;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/*等同于*/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;margin&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;12&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;px&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;10&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;px&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;12&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;px&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;10&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;px&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;如果只写一个值，则4个边都取这个值。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&lt;span style="color:#66d9ef"&gt;margin&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;12&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;px&lt;/span&gt;;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/*等同于*/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&lt;span style="color:#66d9ef"&gt;margin&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;12&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;px&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;12&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;px&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;12&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;px&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;12&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;px&lt;/span&gt;;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;另外每个盒子的属性也分三个粒度，这三个粒度从一般到特殊分别举例如下：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;border&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;px&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;dashed&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;red&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;混合使用三种粒度的简写属性达成设计目标是很常见的。比如，想为盒子的上边和下边添加4像素的红色边框，为左边添加1像素宽的红色边框，而右边没有。可以这么写：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&lt;span style="color:#66d9ef"&gt;border&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;4&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;px&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;solid&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;red&lt;/span&gt;;} &lt;span style="color:#75715e"&gt;/* 先给4条边设置相同的样式*/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&lt;span style="color:#66d9ef"&gt;border-left-width&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;px&lt;/span&gt;;} &lt;span style="color:#75715e"&gt;/* 修改左边框宽度*/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{border-fight: &lt;span style="color:#66d9ef"&gt;none&lt;/span&gt;;} &lt;span style="color:#75715e"&gt;/*移出右边框*/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="盒子边框"&gt;盒子边框&lt;/h3&gt;
&lt;p&gt;border 有三个相关属性。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;宽度（border-width)。可以使用thin、medium和thick等文本值，也可以使用除百分比和负值之外的任何绝对值。&lt;/li&gt;
&lt;li&gt;样式（border-style)。有none、hidden、dotted、dashed等文本值。&lt;/li&gt;
&lt;li&gt;颜色（border-color）。可以使用任意颜色值，包括RGB、HSL、十六进制颜色值和颜色关键字。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="盒子内边距"&gt;盒子内边距&lt;/h3&gt;
&lt;p&gt;内边距是盒子内容区与盒子边框之间的距离。&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="http://omuo4kh1k.bkt.clouddn.com/sKiD0I3LeE7lTK8rARqH8TFpzVK9vh4QoAWCg_7Ll7m9V8VMkBNKY_YfvVUueia8"&gt;&lt;/p&gt;
&lt;p&gt;上图的样式为：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;p&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;font&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;16&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;px&lt;/span&gt; helvetica, &lt;span style="color:#66d9ef"&gt;sans-serif&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;width&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;220&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;px&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;border&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;px&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;solid&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;red&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;background-color&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;#caebff&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;可以看到在没有设定内边距的情况下，内容紧挨着边框。&lt;/p&gt;
&lt;p&gt;设定边框后：&lt;/p&gt;</description></item><item><title>CSS入门指南-1：工作原理</title><link>https://blog.gusibi.site/post/css-learing-1-css-how-it-works/</link><pubDate>Sat, 27 May 2017 17:22:49 +0800</pubDate><guid>https://blog.gusibi.site/post/css-learing-1-css-how-it-works/</guid><description>&lt;blockquote&gt;
&lt;p&gt;这是CSS设计指南的读书笔记，用于加深学习效果。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;最近想做一个小程序，前端是必修课，那就从css开始吧。&lt;/p&gt;
&lt;h2 id="css-工作原理"&gt;css 工作原理&lt;/h2&gt;
&lt;p&gt;每个html元素都有一组样式属性，可以通过css来设定。当html元素的同一个样式属性有多种样式值的时候，css就要靠层叠机智来决定最终应用哪种样式。&lt;/p&gt;
&lt;p&gt;HUGOMORE42&lt;/p&gt;
&lt;h3 id="css规则"&gt;css规则&lt;/h3&gt;
&lt;p&gt;规则实际上是一条完整的css指令，规则声明了要修改的元素和要应用给改元素的样式。&lt;/p&gt;
&lt;h4 id="为文档添加样式的三种方法"&gt;为文档添加样式的三种方法：&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;写在元素标签里（也叫行内样式，只能影响它所在的标签，会覆盖嵌入样式和链接样式）&lt;/li&gt;
&lt;li&gt;写在&amp;lt;style&amp;gt; 标签里（也就嵌入样式，应用范围仅限于当前页面，页面样式会覆盖外部样式表中的样式，但会被行内样式覆盖）&lt;/li&gt;
&lt;li&gt;写在单独css样式表中（也叫链接样式，样式表是一个扩展名为.css 的文件，可以在任意多个HTML页面链接同一个样式表文件。链接样式的作用范围是整个网站）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;除了这三种为页面添加样式的方法，还有一种在样式表中链接其他样式表的方法，使用@import 指令：例如&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;@import url(css/styles.css)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;@import 指令必须出现在样式表中其他样式之前，否则@吹灭；@import引用的样式表不会被加载。
&lt;img alt="css 规则命名惯例" loading="lazy" src="http://omuo4kh1k.bkt.clouddn.com/cpByY2yOl7gHv6vEFDL2CyMt8YJQ-0t0MRxo6itjABg0PeYrrqz6wrIV6q5kKsm8"&gt;&lt;/p&gt;
&lt;p&gt;对这个基本的结构有三种方法可以进行扩展&lt;/p&gt;
&lt;p&gt;**第一种方法：**多个声明包含在一条规则里。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;p&lt;/span&gt; {&lt;span style="color:#66d9ef"&gt;color&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;red&lt;/span&gt;; &lt;span style="color:#66d9ef"&gt;font-size&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;12&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;px&lt;/span&gt;; &lt;span style="color:#66d9ef"&gt;font-weight&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;bold&lt;/span&gt;;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;**第二种方法：**多个选择器组合在一起。例如：如果想让&amp;lt;h1&amp;gt;、&amp;lt;h2&amp;gt;和&amp;lt;h3&amp;gt;的文本都变成蓝色粗体可以这么写：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;h1&lt;/span&gt; {&lt;span style="color:#66d9ef"&gt;color&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;blue&lt;/span&gt;; &lt;span style="color:#66d9ef"&gt;font-weight&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;bold&lt;/span&gt;;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;h2&lt;/span&gt; {&lt;span style="color:#66d9ef"&gt;color&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;blue&lt;/span&gt;; &lt;span style="color:#66d9ef"&gt;font-weight&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;bold&lt;/span&gt;;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;h3&lt;/span&gt; {&lt;span style="color:#66d9ef"&gt;color&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;blue&lt;/span&gt;; &lt;span style="color:#66d9ef"&gt;font-weight&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;bold&lt;/span&gt;;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;也可以这么写：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;h1&lt;/span&gt;&lt;span style="color:#f92672"&gt;,&lt;/span&gt; &lt;span style="color:#f92672"&gt;h2&lt;/span&gt;&lt;span style="color:#f92672"&gt;,&lt;/span&gt; &lt;span style="color:#f92672"&gt;h3&lt;/span&gt; {&lt;span style="color:#66d9ef"&gt;color&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;blue&lt;/span&gt;; &lt;span style="color:#66d9ef"&gt;font-weight&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;bold&lt;/span&gt;;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;分组选择符以逗号作为分隔符&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第三种方法：&lt;/strong&gt; 多条规则应用给一个选择符。
例如，写完上边的规则，还想把h3变成斜体，那么可以再为h3单独写一条规则：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;h1&lt;/span&gt;&lt;span style="color:#f92672"&gt;,&lt;/span&gt; &lt;span style="color:#f92672"&gt;h2&lt;/span&gt;&lt;span style="color:#f92672"&gt;,&lt;/span&gt; &lt;span style="color:#f92672"&gt;h3&lt;/span&gt; {&lt;span style="color:#66d9ef"&gt;color&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;blue&lt;/span&gt;; &lt;span style="color:#66d9ef"&gt;font-weight&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;bold&lt;/span&gt;;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;h3&lt;/span&gt; {&lt;span style="color:#66d9ef"&gt;font-style&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;italic&lt;/span&gt;;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="选择特定元素的选择符"&gt;选择特定元素的选择符&lt;/h3&gt;
&lt;p&gt;用于选择特定元素的操作符有三种&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;上下文选择符&lt;/strong&gt;。基于祖先或者同胞元素选择一个元素。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ID和类选择符&lt;/strong&gt;。基于id和class属性的值选择元素。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;属性选择符&lt;/strong&gt;。基于属性的有无和特征选择元素。&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id="上下文选择符"&gt;上下文选择符&lt;/h4&gt;
&lt;p&gt;比如我们想给article中的段落设置不同的字号，可以使用上下文选择符来解决。&lt;/p&gt;
&lt;p&gt;上下文选择符的格式如下：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;标签1 标签2 {声明}&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;其中&lt;strong&gt;标签2&lt;/strong&gt; 是我们要选择的目标，而且只有在 &lt;strong&gt;标签1&lt;/strong&gt;是其祖先元素的情况下才会被选中。&lt;/p&gt;
&lt;p&gt;上下文选择符，叫后代组合式选择符，就是一组以空格分隔的标签名。用于选择作为特定祖先元素后代的标签。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;article&lt;/span&gt; &lt;span style="color:#f92672"&gt;p&lt;/span&gt; {&lt;span style="color:#66d9ef"&gt;font-weight&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;bold&lt;/span&gt;;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;上边例子中，只有article后代的p元素才会应用后边的样式。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;上下文选择符以空格作为分隔符&lt;/strong&gt;&lt;/p&gt;
&lt;h5 id="特殊的上下文选择符"&gt;特殊的上下文选择符&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;子选择符 &amp;gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;格式如下：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;标签1 &amp;gt; 标签2&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;标签1&lt;/strong&gt; 必须是 &lt;strong&gt;标签2&lt;/strong&gt; 的&lt;strong&gt;父元素&lt;/strong&gt;，不能是其它的祖先元素。&lt;/p&gt;</description></item></channel></rss>