├── README.md └── posts ├── about-me.md ├── common-sense-in-design.md ├── css-preprocessor.md ├── drafts ├── GreaseSpot │ └── wiki │ │ ├── Metadata_Block.md │ │ └── Metadata_Block_zh.md ├── browser-apis │ ├── bom │ │ ├── bom-in-action.md │ │ ├── bom.md │ │ ├── history.md │ │ ├── location.md │ │ ├── navigator.md │ │ ├── screen.md │ │ └── window.md │ ├── dom │ │ ├── document.md │ │ ├── dom-objects.md │ │ ├── dom.md │ │ ├── element.md │ │ ├── html-elements │ │ │ └── HTMLAudio.md │ │ ├── node.md │ │ ├── range.md │ │ ├── selection.md │ │ └── selector-apis.md │ └── event.md ├── css │ ├── css.md │ ├── css_animation.md │ ├── css_background.md │ ├── css_border-image.md │ ├── css_border-radius.md │ ├── css_border.md │ ├── css_box-shadow.md │ ├── css_color.md │ ├── css_column.md │ ├── css_content.md │ ├── css_dimension.md │ ├── css_filter.md │ ├── css_font-face.md │ ├── css_font.md │ ├── css_gradient.md │ ├── css_list.md │ ├── css_margin.md │ ├── css_outline.md │ ├── css_overflow.md │ ├── css_padding.md │ ├── css_position.md │ ├── css_properties.md │ ├── css_selectors.md │ ├── css_table.md │ ├── css_text.md │ ├── css_transform.md │ ├── css_transition.md │ └── css_units.md ├── demo │ └── html │ │ └── html-tag-base │ │ └── index.html ├── html │ ├── html.md │ ├── html_doctype.md │ ├── html_dom_canvas_context_2d.md │ ├── html_semantic.md │ ├── html_tag_a.md │ ├── html_tag_audio.md │ ├── html_tag_base.md │ ├── html_tag_body.md │ ├── html_tag_br.md │ ├── html_tag_canvas.md │ ├── html_tag_form.md │ ├── html_tag_head.md │ ├── html_tag_hr.md │ ├── html_tag_html.md │ ├── html_tag_input.md │ ├── html_tag_link.md │ ├── html_tag_meta.md │ ├── html_tag_script.md │ ├── html_tag_style.md │ ├── html_tag_title.md │ ├── html_tags_div.md │ ├── html_tags_form.md │ ├── html_tags_list.md │ ├── html_tags_media.md │ ├── html_tags_table.md │ ├── html_tags_text.md │ └── images │ │ ├── html-index.html.png │ │ ├── html-semantic-blog-template.png │ │ ├── html-tag-link-icon.png │ │ ├── html-tag-meta-01.png │ │ ├── html-tag-ruby.png │ │ ├── html-tag-title-01.png │ │ └── html-tag-title-02.png ├── javascript │ ├── javascript.md │ ├── js_array.md │ ├── js_class.md │ ├── js_datatype.md │ ├── js_function.md │ ├── js_grammer.md │ ├── js_object-array.md │ ├── js_object-boolean.md │ ├── js_object-date.md │ ├── js_object-math.md │ ├── js_object-number.md │ ├── js_object-properties.md │ ├── js_object-regexp.md │ ├── js_object-string.md │ ├── js_object.md │ ├── js_object_function.md │ ├── js_objects.md │ ├── js_operators.md │ ├── js_regexp.md │ ├── js_statements.md │ └── js_variable.md ├── userstyles-generator │ ├── UI design.ddd │ └── scheme.md ├── w3c │ ├── agents │ │ ├── authoring-tools-social-media.md │ │ └── browser-media-players.md │ ├── browser-and-authoring-tools.md │ ├── semantic-web.md │ ├── semantic-web │ │ ├── inference.md │ │ ├── linked-data.md │ │ ├── query.md │ │ ├── vertical-applications.md │ │ └── vocabulary.md │ ├── standards │ │ ├── css │ │ │ └── CSS.md │ │ ├── dom-events │ │ │ └── DOM-EVENTS.md │ │ ├── dom │ │ │ └── DOM.md │ │ ├── html │ │ │ └── HTML.md │ │ └── javascript-apis │ │ │ └── JAVASCRIPT-APIS.md │ ├── w3c-standards.md │ ├── web-arch │ │ ├── architecture-principles.md │ │ ├── identifiers.md │ │ ├── internationalization.md │ │ ├── meta-formats.md │ │ ├── protocol-and-meta-format-considerations.md │ │ └── protocols.md │ ├── web-architecture.md │ ├── web-design-and-applications.md │ ├── web-design │ │ ├── accessibility.md │ │ ├── audio-and-video.md │ │ ├── graphics.md │ │ ├── html-css.md │ │ ├── internationalization.md │ │ ├── javascript-web-apis.md │ │ ├── math-on-the-web.md │ │ ├── mobile-web.md │ │ └── privacy.md │ ├── web-of-devices.md │ ├── web-of-devices │ │ ├── device-independece-and-content-adaptation.md │ │ ├── mobile-web.md │ │ ├── multimodal-access.md │ │ ├── voice-browsing.md │ │ └── web-and-tv.md │ ├── web-of-services.md │ ├── web-of-services │ │ ├── internationalization.md │ │ ├── protocols.md │ │ ├── security.md │ │ └── service-description.md │ ├── xml │ │ ├── components.md │ │ ├── internationalization.md │ │ ├── processing.md │ │ ├── publishing.md │ │ ├── query.md │ │ ├── schema.md │ │ ├── security.md │ │ ├── transformation.md │ │ └── xml-essentials.md │ └── xnl-technology.md └── web_basic.md ├── how-to-read-w3c-specs.md ├── images ├── common-sense-01.jpg ├── common-sense-02.png ├── common-sense-03.png ├── common-sense-04.jpg ├── common-sense-05.jpg ├── common-sense-06.jpg ├── common-sense-07.jpg ├── common-sense-08.jpg ├── common-sense-09.jpg ├── common-sense-10.jpg ├── position-and-size-element.png ├── position-and-size-screen.png ├── position-and-size-window.png ├── third-party-logging-01.png └── third-party-logging-02.png ├── position-and-size.md ├── posts.json ├── project-in-my-mind.md ├── sublime-text2-install-and-config.md ├── third-party-logging.md ├── tools-and-softwares-on-my-computer.md ├── web-applications-profermance-and-optimizing.md └── xiami-music.md /README.md: -------------------------------------------------------------------------------- 1 | LearnShare-Blog 2 | =============== 3 | 4 | My blog and notes 5 | 6 | Posts 7 | ----- 8 | 9 | + 2013-07-24 [Sublime Text2 安装配置](/posts/sublime-text2-install-and-config.md "Sublime Text2 安装配置") 10 | + 2013-05-14 [设计中的常识](/posts/common-sense-in-design.md "设计中的常识") 11 | + 2013-05-11 [虾米音乐](/posts/xiami-music.md "虾米音乐") 12 | + 2013-04-28 [HTML & JavaScript 中的位置和尺寸](/post/position-and-size.md "HTML & JavaScript 中的位置和尺寸") 13 | + 2013-04-16 [我所使用的一些工具及软件](/posts/tools-and-softwares-on-my-computer.md "我所使用的一些工具及软件[持续更新中]") update @2013-06-02 21:20:39 14 | + 2013-04-11 [HTML标签语义化](/posts/drafts/html_semantic.md "HTML标签语义化[草稿]") 15 | + 2013-04-10 [第三方登录](/posts/third-party-logging.md "第三方登录") 16 | + 2013-04-09 [About LearnShare](/posts/about-me.md "About Me") -------------------------------------------------------------------------------- /posts/about-me.md: -------------------------------------------------------------------------------- 1 | About LearnShare 2 | ================ 3 | 4 | -------------------------------------------------------------------------------- /posts/common-sense-in-design.md: -------------------------------------------------------------------------------- 1 | 设计中的常识 2 | =========== 3 | 4 | 几日前,[@Voldemorty1989](http://weibo.com/2332996753 "他的微博") 同学在 [微博](http://weibo.com/2332996753/zvkYjclql "微博原文") 分享了自己的作品,请求大家指导: 5 | 6 |  7 | 8 | 我给他品论: 9 | >太阳木有高亮,又不是水晶球。 10 | 11 | @Voldemorty1989 同学很快修改了这处错误。由此,我又想到了许多同学会在月牙的缺口处画上几颗星星,这也是一个严重的错误。 12 | 13 | 今天,@Voldemorty1989 同学把整套 [设计作品](http://weibo.com/2332996753/zwEbSzeO4 "微博原文") 分享出来,果然把月牙的缺口画上了星星: 14 | 15 |  16 | 17 | 作为一个挑剔的人,我觉得必须要写写文章了。 18 | 19 | 设计中的现实成分 20 | -------------- 21 | 22 | 设计(Design)应该包括 现实 和 创意 两种成分。而创意,也有相当一部分是抽象自现实。 23 | 24 | 了解设计风格及其变化和发展的同学应该知道,最近有两种风格颇为流行: 25 | 26 | __拟物:__ 模仿现实中物体的形状、色彩和纹理。比如 iOS 的设计,以及许多同学在画的 icon。 27 | 28 |  29 | 30 | __扁平:__ 简化效果,剥离模仿现实的成分(阴影、高光、纹理)。比如 Android 和 Windows Phone 的设计。 31 | 32 |  33 | 34 | 这两种风格虽然完全不同,但都是基于现实的事物延伸和抽象而来。所以, __现实是设计的基础__ 。 35 | 36 | 设计中背离现实的错误 37 | ------------------ 38 | 39 | 下面几个是我在近几天看到的,在设计中背离现实的错误,分享出来与大家一同学习。 40 | 41 | ###1.太阳 42 | 43 | 太阳是经常出现在设计作品中的元素,比如天气图标等。文章开头提到的例子中,设计师给太阳加了高光,看起来更像是水晶球或煎蛋。 44 | 45 |  46 | 47 |  48 | 49 | 太阳看起来应该是这样(透过望远镜并减光): 50 | 51 |  52 | 53 | ###2.月亮 54 | 55 | 月亮,准确的说法应该是 月球。月亮虽然有圆缺,但它本身还是一个球,并没有缺口,阴暗的部分是因为没有阳光直射(就像地球的黑夜一侧)。所以, __月牙的缺口中无法看到任何星星__ 。 56 | 57 | 来看一张月牙的照片,这张照片进行了长时间曝光,所以我们能清楚地看到月球的阴暗面: 58 | 59 |  60 | 61 | ###3.锁 62 | 63 | [@song_楚歌飞雪](http://weibo.com/cathysong "他的微博") 同学也在前两天分享了自己的 [作品](http://weibo.com/1653923503/zvcPmozSr "微博原文"): 64 | 65 |  66 | 67 | 一个不太起眼,却又非常明显的错误:锁扣不会在锁的中心。 68 | 69 |  70 | 71 | 要善于观察 72 | --------- 73 | 74 | 善于观察,可以积累知识、获得灵感,从而提升设计的质量。许多常识,要从细致的观察得到。 75 | 76 | 我觉得设计师们都应该去搞搞摄影和手工制作,光熟悉 PS 的工具条是不够的, __现实才是设计的基础__ 。 77 | 78 | >关于我: 79 | >[LearnShare](http://weibo.com/learnshare "我的微博"),学 PS 起家的 Web 前端开发,业余天文爱好者,爱挑毛病星人。 -------------------------------------------------------------------------------- /posts/css-preprocessor.md: -------------------------------------------------------------------------------- 1 | CSS 预处理器 2 | ========= 3 | 4 | CSS 预处理器是一种方便快速编写 CSS 代码的工具。它们基于 CSS 的语法规则,并在传统的 CSS 中扩展了如下功能: 5 | 6 | + 变量 7 | + 继承 8 | + 混入(Mixin) 9 | + 规则集合(Ruleset) 10 | + 嵌套 11 | + 计算 12 | + 函数 13 | + 条件语句 14 | + 循环 15 | + 导入(import) 16 | + 命名空间 17 | + JS 函数 -------------------------------------------------------------------------------- /posts/drafts/browser-apis/bom/bom-in-action.md: -------------------------------------------------------------------------------- 1 | BOM 实战 2 | ======= 3 | 4 | `BOM` 实战部分包含了许多 BOM API 的应用实例。 5 | 6 | 对话框 7 | ----- 8 | 9 | + win.alert() 10 | + win.prompt() 11 | + win.confirm() 12 | 13 | 定时器和计时器 14 | ----------- 15 | 16 | + win.setTimeout() 17 | + win.clearTimeout() 18 | + win.setInterval() 19 | + win.clearInterval() 20 | 21 | 页面滚动/缓动 22 | ----------- 23 | 24 | + win.scrollBy() 25 | + win.scrollTo() 26 | 27 | 页面高度自适应 28 | ----------- 29 | 30 | + win.innerHeight 31 | + win.onresize 32 | 33 | 历史管理 34 | ------- 35 | 36 | URL 管理 37 | -------- -------------------------------------------------------------------------------- /posts/drafts/browser-apis/bom/bom.md: -------------------------------------------------------------------------------- 1 | BOM 浏览器对象模型 2 | ============== 3 | 4 | `BOM` (Browser Object Model,浏览器对象模型)提供了通过 `JavaScript` 访问和控制浏览器窗口(window)、显示器(screen)与浏览历史(history)等对象的接口。 5 | 6 | `BOM` 并非 W3C 的标准,而是在各家浏览器中逐渐形成的一致性接口。 7 | 8 | `BOM` 可以看做是 Browser API 的一部分。 9 | 10 | BOM 对象 11 | -------- 12 | 13 | ###1.Window 14 | 15 | ###2.Navigator 16 | 17 | ###3.Screen 18 | 19 | ###4.History 20 | 21 | ###5.Location -------------------------------------------------------------------------------- /posts/drafts/browser-apis/bom/history.md: -------------------------------------------------------------------------------- 1 | History 对象 2 | ========== 3 | 4 | `history` 对象代表了浏览历史。 5 | 6 | 属性 7 | --- 8 | 9 | ###length 10 | 11 | 历史列表的长度(浏览过的页面数量)。 12 | 13 | 方法 14 | --- 15 | 16 | ###back() 17 | 18 | 加载历史列表中的前一个页面(后退一步)。 19 | 20 | 语法: 21 | >history.back(); 22 | 23 | ###forward() 24 | 25 | 加载历史列表中的下一个页面(前进一步)。 26 | 27 | 语法: 28 | >history.forward(); 29 | 30 | ###go() 31 | 32 | 加载历史列表中指定的页面。 33 | 34 | 语法: 35 | >history.go(n); 36 | 37 | 参数: 38 | >1.n 要加载的页面与当前页面的相对距离(0 代表当前页面;-1 代表上一个页面) -------------------------------------------------------------------------------- /posts/drafts/browser-apis/bom/location.md: -------------------------------------------------------------------------------- 1 | Location 对象 2 | =========== 3 | 4 | `location` 对象包含了当前页面 URL 的相关信息。 5 | 6 | 属性 7 | --- 8 | 9 | ###hash 10 | 11 | 设置或返回当前 URL 中的锚信息(从 # 开始的部分)。 12 | 13 | ###host 14 | 15 | 设置或返回当前 URL 中的主机名和端口号。 16 | 17 | ###hostname 18 | 19 | 设置或返回当前 URL 中的主机名。 20 | 21 | ###href 22 | 23 | 设置或返回当前 URL。 24 | 25 | ###pathname 26 | 27 | 设置或返回当前 URL 中的路径部分。 28 | 29 | ###port 30 | 31 | 设置或返回当前 URL 中的端口号。 32 | 33 | ###protocol 34 | 35 | 设置或返回当前 URL 的协议。 36 | 37 | ###search 38 | 39 | 设置或返回当前 URL 中的查询信息(以 ? 开始的部分)。 40 | 41 | 方法 42 | --- 43 | 44 | ###assign() 45 | 46 | 加载新页面。 47 | 48 | 语法: 49 | >location.assigh(url); 50 | 51 | 参数: 52 | >1.url 要加载的页面 URL 53 | 54 | ###reload() 55 | 56 | 重新加载当前页面。 57 | 58 | 语法: 59 | >location.reload(force); 60 | 61 | 参数: 62 | >1.force 是否强制重新加载(从服务器重新加载,忽略本地缓存)。true 强制重新加载;false 重新加载。该参数可选,默认为 false 63 | 64 | ###replace() 65 | 66 | 加载新页面,并替换当前页面(不产生新的历史记录)。 67 | 68 | 语法: 69 | >location.assigh(url); 70 | 71 | 参数: 72 | >1.url 要加载的页面 URL -------------------------------------------------------------------------------- /posts/drafts/browser-apis/bom/navigator.md: -------------------------------------------------------------------------------- 1 | Navigator 对象 2 | ============ 3 | 4 | `navigator` 对象包含了浏览器的相关信息。 5 | 6 | 属性 7 | --- 8 | 9 | plugins 10 | 11 | 以数组形式返回页面中的嵌入对象。 12 | 13 | appCodeName 14 | 15 | 浏览器代码名称。 16 | 17 | appMinorVersion 18 | 19 | 浏览器的次要版本号。 20 | 21 | appName 22 | 23 | 浏览器名称。 24 | 25 | appVersion 26 | 27 | 包括浏览器的平台及版本信息。 28 | 29 | browserLangauge 30 | 31 | 浏览器的语言。 32 | 33 | cookieEnabled 34 | 35 | 是否已启用 cookie。 36 | 37 | cpuClass 38 | 39 | CPU 信息。 40 | 41 | onLine 42 | 43 | 在线模式/脱机模式。 44 | 45 | platform 46 | 47 | 运行平台。 48 | 49 | systemLangauge 50 | 51 | 浏览器所在系统使用的语言。 52 | 53 | userAnget 54 | 55 | 用户代理信息。 56 | 57 | userLangauge 58 | 59 | 浏览器所在系统使用的语言。 60 | 61 | 方法 62 | --- 63 | 64 | javaEnabled() 65 | 66 | 检测浏览器是否启用了 Java。 67 | 68 | 语法: 69 | >navigator.javaEnabled(); 70 | 71 | 返回值: 72 | >1.true 已启用 73 | >2.false 已禁用 74 | 75 | taintEnabled() 76 | 77 | 检测浏览器是否启用了 data tainting。 78 | 79 | 语法: 80 | >navigator.taintEnabled(); 81 | 82 | 返回值: 83 | >1.true 已启用 84 | >2.false 已禁用 -------------------------------------------------------------------------------- /posts/drafts/browser-apis/bom/screen.md: -------------------------------------------------------------------------------- 1 | Screen 对象 2 | ========= 3 | 4 | `screen` 对象包含了显示器屏幕的相关信息。 5 | 6 | 属性 7 | --- 8 | 9 | ###availHeight 10 | 11 | 返回屏幕窗口显示区域的高度(不高扩任务栏)。 12 | 13 | ###availWidth 14 | 15 | 返回屏幕窗口显示区域的宽度(不高扩任务栏)。 16 | 17 | ###bufferDepth 18 | 19 | 设置或返回调色板比特值。 20 | 21 | ###colorDepth 22 | 23 | 设置或返回设备或缓冲器的调色板比特值。 24 | 25 | ###deviceXDPI 26 | 27 | 返回屏幕水平 DPI(每英寸点数)。 28 | 29 | ###deviceYDPI 30 | 31 | 返回屏幕垂直 DPI(每英寸点数)。 32 | 33 | ###fontSmoothingEnabled 34 | 35 | 返回是否启用了字体平滑。 36 | 37 | ###height 38 | 39 | 返回屏幕高度。 40 | 41 | ###localXDPI 42 | 43 | 返回屏幕水平 DPI(每英寸点数)。 44 | 45 | ###localYDPI 46 | 47 | 返回屏幕垂直 DPI(每英寸点数)。 48 | 49 | ###pixelDepth 50 | 51 | 返回屏幕的颜色分辨率。 52 | 53 | ###updateInterval 54 | 55 | 设置或返回屏幕的刷新频率。 56 | 57 | ###width 58 | 59 | 返回屏幕宽度。 -------------------------------------------------------------------------------- /posts/drafts/browser-apis/dom/document.md: -------------------------------------------------------------------------------- 1 | Document 对象 2 | =========== 3 | 4 | `document` 对象代表了整个 HTML 文档(HTML 元素)。 5 | 6 | 属性 7 | ---- 8 | 9 | activeElement 10 | 11 | 返回当前获取焦点的对象。 12 | 13 | anchors 14 | 15 | 以数组形式返回页面中的锚。 16 | 17 | body 18 | 19 | 返回 body 节点。 20 | 21 | characterSet 22 | 23 | 返回页面的字符集。 24 | 25 | cookie 26 | 27 | 以分号分隔列表的形式返回所有 cookie,也可以通过 cookie="key1=value1;key2=value2" 设置 cookie 值。 28 | 29 | defaultView 30 | 31 | 返回当前文档所在的 window 对象的引用。 32 | 33 | designMode 34 | 35 | 设置或返回页面内容是否可编辑。 36 | 37 | doctype 38 | 39 | 返回 DTD。 40 | 41 | documentElement 42 | 43 | 返回 html 节点。 44 | 45 | embeds 46 | 47 | 以数组形式返回 embed 对象列表。 48 | 49 | forms 50 | 51 | 以数组形式返回 form 对象列表。 52 | 53 | head 54 | 55 | 返回 head 节点。 56 | 57 | images 58 | 59 | 以数组形式返回 image 对象列表。 60 | 61 | lastModified 62 | 63 | 返回文档的最后修改时间。 64 | 65 | links 66 | 67 | 以数组形式返回 link 对象列表。 68 | 69 | plugins 70 | 71 | 以数组形式返回 plugin 对象列表。 72 | 73 | readyState 74 | 75 | 返回文档当前状态(loading 加载中;interactive 解析完成;complete 加载完毕)。 76 | 77 | referrer 78 | 79 | 返回跳转到当前页面的前一个页面的 URI。 80 | 81 | scripts 82 | 83 | 以数组形式返回 script 对象列表。 84 | 85 | styleSheets 86 | 87 | 以数组形式返回 styleSheet 对象列表。 88 | 89 | title 90 | 91 | 返回页面的 title 值。 92 | 93 | 方法 94 | ---- 95 | 96 | close() 97 | 98 | 关闭文档的输出流。 99 | 100 | 语法: 101 | >document.close(); 102 | 103 | 输出流由 open() 方法打开,可通过 write() 方法输出文本内容。 104 | 105 | createAttribute() 106 | 107 | 创建并返回属性节点。 108 | 109 | 语法: 110 | >document.createAttribute("attr"); 111 | 112 | craeteComment() 113 | 114 | 创建并返回注释节点。 115 | 116 | 语法: 117 | >document.createComment("comments"); 118 | 119 | createDocumentFragment() 120 | 121 | 创建并返回文档片段。 122 | 123 | 语法: 124 | >document.createDocumentFragment(); 125 | 126 | createElement() 127 | 128 | 创建并返回元素节点。 129 | 130 | 语法: 131 | >document.createElement("tag"); 132 | 133 | craeteRange() 134 | 135 | 创建并返回 Range 对象。 136 | 137 | 语法: 138 | >document.createRange(); 139 | 140 | createTextNode() 141 | 142 | 创建并返回文本节点。 143 | 144 | 语法: 145 | >document.createTextNode("text"); 146 | 147 | elementFromPoint() 148 | 149 | 返回指定位置的元素。 150 | 151 | 语法: 152 | >document.elementFromPoint(x,y); 153 | 154 | hasFocus() 155 | 156 | 当前文档是否获取了焦点。 157 | 158 | 语法: 159 | >document.hasFocus(); 160 | 161 | open() 162 | 163 | 打开文档的输出流。 164 | 165 | 语法: 166 | >document.open(); 167 | 168 | 输出流可通过 write() 方法输出文本内容,并使用 close() 方法关闭你。 169 | 170 | releaseCapture() 171 | 172 | 释放页面元素捕获的鼠标。 173 | 174 | 语法: 175 | >document.releaseCapture(); 176 | 177 | 鼠标可通过 elmt.setCapture() 捕获。 178 | 179 | write() 180 | 181 | 向文档输出流中输出文本。 182 | 183 | 语法: 184 | >document.write("text"); 185 | 186 | 文本可包含 HTML tag,会被解析为 HTML。 187 | 188 | writeln() 189 | 190 | 向文档输出流中输出文本,会在输出的文本之后添加换行。 191 | 192 | 语法: 193 | >document.writeln("text"); 194 | 195 | 事件 196 | --- 197 | 198 | ononline 199 | 200 | onoffline 201 | 202 | onreadystatechange -------------------------------------------------------------------------------- /posts/drafts/browser-apis/dom/dom-objects.md: -------------------------------------------------------------------------------- 1 | DOM Objects DOM 对象 2 | ================= 3 | 4 | DOM 对象代表了 DOM 树中的各类元素,它们具有许多有用的属性,并提供了许多访问/修改 DOM 的方法。 5 | 6 | 参考:[mozila dev/DOM/dom-reference](https://developer.mozilla.org/en-US/docs/DOM/DOM_Reference) 7 | 8 | -------------------------------------------------------------------------------- /posts/drafts/browser-apis/dom/dom.md: -------------------------------------------------------------------------------- 1 | DOM 文档对象模型 2 | ============= 3 | 4 | `DOM` (Document Object Model,文档对象模型)提供了通过 `JavaScript` 访问和控制 HTML 和 XML 文档内容的接口。 5 | 6 | `DOM` 的核心是将文档中的所有内容作为对象处理,这些对象又被称作节点(Node)。 7 | 8 | 节点 9 | ---- 10 | 11 | `DOM` 中的节点包括: 12 | 13 | + 代表每个 HTML 元素的 __元素节点__ 14 | + 代表整个 HTML 文档(HTML 元素)的 __文档节点(document 对象)__ 15 | + 代表 HTML 元素属性的 __属性节点__ 16 | + 代表嵌套在 HTML 元素中的文本的 __文本节点__ 17 | + 代表注释的 __注释节点__ 18 | 19 | 参考:node.md 20 | 21 | 节点树(DOM 树/文档树) 22 | ----- 23 | 24 | HTML 文档在浏览器中被解析成树形数据结构,该数据结构称为节点树(DOM 树/文档树)。 25 | 26 | 节点树的特征: 27 | 28 | + document 节点称为 __根节点(root node)__ 29 | + 除了文档节点,所有节点都有 __父节点__ 和 __祖先节点__ 30 | + 大部分元素都有 __子节点__ 31 | + 父节点相同的节点称为 __兄弟节点__ 32 | 33 | 访问节点 34 | ------- 35 | 36 | ###查找节点 37 | 38 | document 对象提供了从文档中查找元素/集合的方法: 39 | 40 | + getElementById("id") 41 | + getElementByName("name") 42 | + getElementsByClassName("class") 43 | + getElementsByTagName("tag") 44 | + querySelector("selectors") 45 | + querySelectorAll("selectors") 46 | 47 | 也可以直接通过 document 对象的属性访问某些元素/集合: 48 | 49 | + document.all 50 | + document.images 51 | + document.links 52 | + document.body 53 | + ... 54 | 55 | 参考:document.md 和 selector-apis.md 56 | 57 | 注:本文中的 `元素` 一词等同于 `节点` 。 58 | 59 | ###读取/设置 HTML 属性 60 | 61 | + node.attributes nodeList 属性列表 node.attributes[0].nodeName(属性名)/.nodeValue(属性值) 62 | + elmt.classList 数组 ["class0","class1",...] 63 | + elmt.name str name 属性值 64 | + elmt.className str class 属性值 65 | + elmt.getAttribute("attr") str attr 属性值 66 | + elmt.setAttribute("attr","value") 67 | + node.hasAttribute("attr") true/false 68 | + node.hasAttributes() true/false 69 | + elmt.removeAttribute("attr") 70 | + elmt.setAttributeNode("attr","value") 71 | 72 | ###读取/修改 HTML 内容 73 | 74 | + innerHTML 75 | + nodeValue textNode 76 | 77 | 访问节点树 78 | --------- 79 | 80 | ###遍历节点树 81 | 82 | 节点/集合的访问方式只能访问到元素节点,如果需要访问属性节点和文本节点,还需要借助节点之间的关系: 83 | 84 | + node.childNodes 子节点列表 85 | + node.firstChild 首个子节点 86 | + node.lastChild 最后一个子节点 87 | + node.nextSibling 下一个兄弟节点 88 | + node.previousSibling 上一个兄弟节点 89 | + node.parentNode 父节点 90 | + node.textContent 所有文本,包含特殊字符(换行等) 91 | + node.hasChildNodes() true/false 92 | 93 | 参考:node.md 94 | 95 | ###添加/复制/删除节点 96 | 97 | + node.appendChild(child) 98 | + node.cloneNode(child) 99 | + node.insertBefore(newNode,target) 100 | + node.removeChild(child)/removeNode(child) 101 | + node.replaceChild(child)/replaceNode(child) 102 | 103 | 访问节点样式 104 | ---------- 105 | 106 | ###node.style 107 | 108 | node.style 属性代表了节点的 CSS 样式,可通过它来访问/操作节点的样式: 109 | 110 | var target=document.getElementById("target"); 111 | target.style.backgroundColor="#CCC"; 112 | 113 | 在 style 属性中的任何包含 `-` 的样式属性名都要采用 `驼峰命名法` ,如: 114 | 115 | margin-top --> marginTop 116 | background-color --> backgroundColor 117 | 118 | 另外,任何 style 中样式的值均为字符串类型,其格式与 CSS 中的属性值相同。 119 | 120 | ###优化方案 121 | 122 | 如果需要修改大量节点的样式,或者需要修改大量样式,建议先在 CSS 中编写好样式,然后通过 JS 修改节点的 class/id 等属性值,使其应用相应的样式: 123 | 124 | // CSS 125 | .blue{ 126 | color:#00F; 127 | } 128 | // JS 129 | document.getElementsByClassName("target").className += "blue"; 130 | 131 | 事件 132 | ---- 133 | 134 | 事件在程序中用来监视可能产生的动作,并在该动作发生时产生相应的反应。GUI 程序都是由事件驱动的,如界面中的按钮,会在鼠标点击时执行相应的动作。 135 | 136 | ###监听事件 137 | 138 | 有多种方式来为目标对象添加事件监听函数: 139 | 140 | ① 在 HTML 中设置事件属性(出于内容与行为分离的考虑,不要这么干) 141 | >\ 142 | 143 | ② 为对象的事件属性赋值 144 | >elmt.onclick=func; 145 | 146 | ③ 为对象绑定事件监听函数 147 | >elmt.addEventListener("event",func()); 148 | 149 | ###解除监听 150 | 151 | 某些时候,不再需要监视某个事件,可以取消事件监听函数: 152 | 153 | ① 将对象的事件属性设置为空 154 | >elmt.onclick=null; 155 | 156 | ② 取消绑定的事件监听函数 157 | >elmt.removeEventListener("event",func()); 158 | 159 | ###事件对象 160 | 161 | 从事件对象中,可以获得事件的详细信息: 162 | 163 | + event.srcElement 事件源 164 | + event.offsetX/event.offsetY 事件发生的位置 165 | 166 | 参考:event.md -------------------------------------------------------------------------------- /posts/drafts/browser-apis/dom/element.md: -------------------------------------------------------------------------------- 1 | Element 对象 2 | ========== 3 | 4 | `Element` 对象代表了元素节点,继承自 `Node` 对象。 -------------------------------------------------------------------------------- /posts/drafts/browser-apis/dom/html-elements/HTMLAudio.md: -------------------------------------------------------------------------------- 1 | Audio对象 2 | ---------- 3 | 4 | 参考:[HTMLMediaElement](https://developer.mozilla.org/zh-CN/docs/DOM/HTMLMediaElement "HTMLMediaElement") 5 | [MediaElement](http://www.w3.org/TR/2012/CR-html5-20121217/embedded-content-0.html#media-element "media-element") 6 | 7 | ###属性 8 | 9 | 1.src 10 | 11 | 音频文件的URL。 12 | 13 | var src=audio.src; // 读取URL 14 | audio.src="music.mp3"; // 修改URL 15 | 16 | 2.currentTime 17 | 18 | 当前播放时间(单位:秒)。 19 | 20 | var time=audio.currentTime; // 读取当前时间 21 | audio.currentTime=30; // 设置当前时间为30秒 22 | 23 | 3.volume 24 | 25 | 音频的音量(范围:0.0-1.0)。 26 | 27 | var volume=audio.volume; // 读取音量 28 | audio.volume+=0.1; // 增大音量 29 | 30 | 4.autoplay 31 | 32 | 音频是否自动播放(true/false)。 33 | 34 | var autoplay=audio.autoplay; // 读取自动播放状态 35 | audio.autoplay=true; // 设置音频自动播放 36 | 37 | 5.controls 38 | 39 | 是否显示播放控件(true/false)。 40 | 41 | 6.defaultMuted 42 | 43 | 是否默认静音(true/false)。 44 | 45 | 7.defaultPlaybackRate 46 | 47 | 默认播放速度(>0.0~1.0-...)。 48 | 49 | 8.duration 50 | 51 | 音频时长(只读,单位:秒)。 52 | 53 | 9.ended 54 | 55 | 是否播放完毕(只读,true/false)。 56 | 57 | 10.initialTime 58 | 59 | 可播放的起始时间(只读,单位:秒)。 60 | 61 | 11.loop 62 | 63 | 是否循环播放(true/false)。 64 | 65 | 12.muted 66 | 67 | 是否静音(true/false)。 68 | 69 | 13.networkState 70 | 71 | 网络状态。 72 | 73 | NETWORK_EMPTY/0 未加载文件 74 | NETWORK_IDLE/1 网络空闲 75 | NETWORK_LOADING/2 正在加载文件 76 | NETWORK_NO_SOURCE/3 资源不可用【?】 77 | 78 | 14.paused 79 | 80 | 是否暂停(只读,true/false)。 81 | 82 | 15.playbackRate 83 | 84 | 播放速度。 85 | 86 | FF中,范围是 0.25~5.0。 87 | Chrome中,范围是 0.5~4.0。 88 | 89 | 16.played 90 | 91 | 已播放时间范围(只读)。 92 | 93 | timeRanges 94 | 95 | 17.preload 96 | 97 | 预加载方式(none/metadata/auto)。 98 | 99 | 18.readyState 100 | 101 | 媒体状态(只读)。 102 | 103 | HAVE_NOTHING/0 不可用 104 | HAVE_METADATA/1 媒体信息可用 105 | HAVE_CURRENT_DATA/2 已加载当前播放数据 106 | HAVE_FUTURE_DATA/3 已加载未来播放数据 107 | HAVE_ENOUGH_DATA/4 数据充足 108 | 109 | 19.seekable 110 | 111 | 用户可选播放范围。 112 | 113 | TimeRanges 包含多个时间段的数组。 114 | timeRanges.length 数组长度 115 | timeRanges.start(i) 时间段i的起始时间 116 | timeRanges.end(i) 时间段i的终止时间 117 | 118 | 20.seeking 119 | 120 | 是否正在选择播放位置(拖动滑块)。 121 | 122 | 21.buffered 123 | 124 | 已加载的时间段(timeRanges)。 125 | 126 | ###方法 127 | 128 | 1.play() 129 | 130 | 开始播放。 131 | 132 | audio.play(); // 开始播放 133 | 134 | 2.pause() 135 | 136 | 暂停播放。 137 | 138 | audio.pause(); // 暂停播放 139 | 140 | 3.load() 141 | 142 | 开始加载数据。 143 | 144 | 4.canPlayType(DOMString) 145 | 146 | return: 147 | >1. probably 可播放 148 | >2. maybe 可能可播放 149 | >3. [empty] 不可播放 150 | 151 | ###事件 152 | 153 | 1.abort 154 | 155 | 文件载入被中止时触发。 156 | 157 | 2.canplay 158 | 159 | 文件可开始播放时触发。 160 | 161 | 3.canplaythrough 162 | 163 | 文件完全可播放时触发。(不需要暂停来缓冲) 164 | 165 | 4.durationchange 166 | 167 | 文件时长改变时触发。 168 | 169 | 5.emptied 170 | 171 | 播放列表为空时触发。 172 | 173 | 6.ended 174 | 175 | 播放结束时触发。 176 | 177 | 7.error 178 | 179 | 文件载入出错时触发。 180 | 181 | 8.loadeddata 182 | 183 | 文件当前帧加载完成时触发。 184 | 185 | 9.loadedmetadata 186 | 187 | 媒体信息加载完成时触发。 188 | 189 | 10.loadstart 190 | 191 | 浏览器开始查找文件时触发。 192 | 193 | 11.pause 194 | 195 | 播放被暂停时触发。 196 | 197 | 12.play 198 | 199 | 开始播放时触发。 200 | 201 | 13.playing 202 | 203 | 暂停或停止后,文件可播放时触发。 204 | 205 | 14.progress 206 | 207 | 浏览器加载媒体文件时触发。 208 | 209 | 15.ratechange 210 | 211 | 播放速度改变时触发。 212 | 213 | 16.seeked 214 | 215 | 用户选择播放进度后触发。 216 | 217 | 17.seeking 218 | 219 | 用户选择播放进度时触发。 220 | 221 | 18.stalled 222 | 223 | 浏览器尝试加载媒体信息,但信息不可用时触发。 224 | 225 | 19.suspend 226 | 227 | 浏览器有意不加载媒体信息时触发。 228 | 229 | 20.timeupdate 230 | 231 | 播放位置改变时触发。 232 | 233 | 21.volumechange 234 | 235 | 音量改变时触发。 236 | 237 | 22.waiting 238 | 239 | 播放因需要换冲而暂停时触发。 -------------------------------------------------------------------------------- /posts/drafts/browser-apis/dom/range.md: -------------------------------------------------------------------------------- 1 | Range 2 | ===== 3 | 4 | `Range` 对象代表了包含文本节点片段或其他节点的文档片段(范围)。 5 | 6 | 有三种方式获得 Range 对象: 7 | 8 | var range=document.createRange(); 9 | var range=selection.getRangeAt(index); 10 | var range=new Range(); 11 | 12 | 属性 13 | ---- 14 | 15 | ###collapsed 16 | 17 | 范围的起点与终点是否重合(空,未包含任何内容)。 18 | 19 | ###commonAncestorContainer 20 | 21 | 获取文档中包含 Range.startContainer 和 Range.endContainer 节点的最深层节点(最小包含节点)。 22 | 23 | ###endContainer 24 | 25 | 范围终点所在的节点。 26 | 27 | ###endOffset 28 | 29 | 范围终点在 endContainer 节点中的位置。 30 | 31 | ###startContainer 32 | 33 | 范围起点所在的节点。 34 | 35 | ###startOffset 36 | 37 | 范围起点在 endContainer 节点中的位置。 38 | 39 | 方法 40 | ---- 41 | 42 | ###setStart() 43 | 44 | 设置范围的起点。 45 | 46 | 语法: 47 | >range.setStart(startNode, startOffset); 48 | 49 | ###setEnd() 50 | 51 | 设置范围的起点。 52 | 53 | 语法: 54 | >range.setEnd(endNode, endOffset); 55 | 56 | ###setStartBefore() 57 | 58 | 设置范围起点在指定节点之前,目标节点与范围起点所在节点的父节点相同。 59 | 60 | 语法: 61 | >range.setStartBefore(referenceNode); 62 | 63 | 参数: 64 | >用作参考的节点 65 | 66 | ###setStartAfter() 67 | 68 | 设置范围起点在指定节点之后,目标节点与范围起点所在节点的父节点相同。 69 | 70 | ###setEndBefore() 71 | 72 | 设置范围终点在指定节点之前,目标节点与范围终点所在节点的父节点相同。 73 | 74 | ###setEndAfter() 75 | 76 | 设置范围终点在指定节点之后,目标节点与范围终点所在节点的父节点相同。 77 | 78 | ###selectNode() 79 | 80 | 设置范围包含指定节点,目标节点与范围起点/终点所在节点的父节点相同。 81 | 82 | 语法: 83 | >range.selectNode(referenceNode); 84 | 85 | ###selectNodeContents() 86 | 87 | 设置范围包含指定节点的所有内容,目标节点就是范围起点/终点所在节点,startOffset 为 0,endOffset 为目标节点包含的字符数。 88 | 89 | 语法: 90 | >range.selectNodeContents(referenceNode); 91 | 92 | ###collapse(toStart) 93 | 94 | 折叠范围,并将光标定位在范围起点/终点。 95 | 96 | 语法: 97 | >range.collapse(toStart); 98 | 99 | 参数: 100 | >toStart 是否将光标定位在起点(true:定位在起点;false:定位在终点(默认)) 101 | 102 | ###cloneContents() 103 | 104 | 以 DocumentFragment 对象的形式返回 Range 的内容。 105 | 106 | ###deleteContents() 107 | 108 | 从文档中删除 Range 包含的内容。 109 | 110 | ###extractContents() 111 | 112 | 从文档中删除 Range 包含的内容,以 DocumentFragment 对象的形式返回。 113 | 114 | ###insertNode() 115 | 116 | 将指定节点添加到范围的开始。如果目标节点将要插入到文本节点中,则该文本节点被分割成两部分。 117 | 118 | 语法: 119 | >range.insertNode(newNode); 120 | 121 | ###surroundContents(newNode) 122 | 123 | 将 Range 的内容插入到指定节点中,并将目标节点放置在 Range 的起始位置。操作完成后,Range 将会包含目标节点。(如果 Range 中包含了非完整元素(被起点/终点截断),则无法完成该操作)。 124 | 125 | 语法: 126 | >range.surroundContents(newNode); 127 | 128 | ###compareBoundaryPoints() 129 | 130 | 比较指定范围与当前范围的起点/终点位置关系。 131 | 132 | 语法: 133 | >range.compareBoundaryPoints(how, sourceRange); 134 | 135 | 参数: 136 | >how 比较方式。可使用的参数: 137 | >>Range.END_TO_END 比较二者的终点 138 | >>Range.END_TO_START 比较目标范围的终点与当前范围的起点 139 | >>Range.START_TO_END 比较目标范围的起点与当前范围的终点 140 | >>Range.START_TO_START 比较二者的起点 141 | 142 | >sourceRange 目标范围 143 | 144 | 返回值: 145 | >-1 之前 146 | >0 相同 147 | >1 之后 148 | 149 | ###cloneRange() 150 | 151 | 复制当前范围,返回其副本,而非引用。 152 | 153 | ###detach() 154 | 155 | 释放当前范围对象。 156 | 157 | ###toString() 158 | 159 | 返回当前范围内的文本。 160 | 161 | ### 162 | 163 | ### 164 | 165 | ### 166 | 167 | ### 168 | 169 | ### -------------------------------------------------------------------------------- /posts/drafts/browser-apis/dom/selection.md: -------------------------------------------------------------------------------- 1 | Selection 2 | ======== 3 | 4 | `Selection` 对象代表了当前页面中被选中的文本,可通过 getSelection() 方法获取该对象: 5 | 6 | var se=window.getSelection(); 7 | var se=document.getSelection(); 8 | 9 | 属性 10 | ---- 11 | 12 | ###anchorNode/baseNode 13 | 14 | 选择起点所在的节点/元素。 15 | 16 | ###anchorOffset/baseOffset 17 | 18 | 选择起点相对于其所在的节点/元素的位置。 19 | 20 | ###focusNode/extentNode 21 | 22 | 选择终点所在的节点/元素。 23 | 24 | ###focusOffset/extentOffset 25 | 26 | 选择终点相对于其所在的节点/元素的位置。 27 | 28 | ###isCollapsed 29 | 30 | 选择起点与终点是否重合(未选择任何内容)。 31 | 32 | ###rangeCount 33 | 34 | 选择范围总数(1:已选择;0:未选择)。 35 | 36 | ###type 37 | 38 | 已选择的类型("Range":范围(已选择);"Caret":插入光标(未选择))。 39 | 40 | ### 41 | 42 | 方法 43 | ---- 44 | 45 | ###getRangeAt() 46 | 47 | 获取指定位置的 Range 对象。 48 | 49 | 语法: 50 | >selection.getRangeAt(index); 51 | 52 | 参数: 53 | >index Range 的索引 54 | 55 | 返回值: 56 | >Range 对象 57 | 58 | ###collapse() 59 | 60 | 将 Selection 对象折叠为插入点(不修改文档内容)。 61 | 62 | 语法: 63 | >selection.collapse(parentNode, offset); 64 | 65 | 参数: 66 | >parentNode 折叠后光标所在的元素 67 | >offset 0:光标位于元素文本的开头;1:光标位于元素文本的末尾 68 | 69 | ###extend() 70 | 71 | 将 Selection 对象的焦点移动到指定元素的指定位置。 72 | 73 | 语法: 74 | >selection.extend(parentNode, offset); 75 | 76 | 参数: 77 | >parentNode 目标元素 78 | >offset 目标位置 79 | 80 | ###modify() 81 | 82 | 修改 Selection 对象选择的内容。 83 | 84 | 语法: 85 | >selection.modify(alter, direction, granularity); 86 | 87 | 参数: 88 | >alter 修改类型("move":移动;"extend":扩展) 89 | >direction 修改进行的方向。可指定的值: 90 | >>forward 向前(根据语言的方向) 91 | >>backward 向后(根据语言的方向) 92 | >>left 向左 93 | >>right 向右 94 | 95 | >granularity 指定修改的间隔。可指定的值: 96 | >>character 按字符 97 | >>word 按单词 98 | >>sentence 按句子 99 | >>line 按行 100 | >>paragraph 按段落 101 | >>lineboundary 行边界 102 | >>sentenceboundary 句边界 103 | >>paragraphboundary 段落边界 104 | >>documentboundary 文档边界 105 | 106 | ###collapseToStart() 107 | 108 | 将光标定位到 Selection 对象首个 Range 的起点。 109 | 110 | 语法: 111 | >selection.collapseToStart(); 112 | 113 | ###collapseToEnd() 114 | 115 | 将光标定位到 Selection 对象最后一个个 Range 的终点。 116 | 117 | 语法: 118 | >selection.collapseToEnd(); 119 | 120 | ###selectAllChildren() 121 | 122 | 选中指定元素的所有子元素(之前选中的内容会被丢弃)。 123 | 124 | 语法: 125 | >selection.selectAllChildren(parentNode); 126 | 127 | ###addRange() 128 | 129 | 将 Range 添加到 Selection 对象。 130 | 131 | 语法: 132 | >selection.addRange(range); 133 | 134 | ###removeRange() 135 | 136 | 从 Selection 对象中移除指定的 Range 对象。 137 | 138 | 语法: 139 | >selection.removeRange(range) 140 | 141 | ###removeAllRanges() 142 | 143 | 从 Selection 对象中移除所有的 Range 对象。 144 | 145 | 语法: 146 | >selection.removeAllRanges(); 147 | 148 | ###deleteFromDocument() 149 | 150 | 从文档中删除选中的内容。 151 | 152 | 语法: 153 | >selection.deleteFromDocument(); 154 | 155 | ###toString() 156 | 157 | 获取选中的文本内容。 158 | 159 | 语法: 160 | >selection.toString(); 161 | 162 | ###containsNode(aNode, aPartlyContained) 163 | 164 | 检测指定元素知否包含(或部分包含)在 Selection 对象中。 165 | 166 | 语法: 167 | >selection.containsNode(aNode, aPartlyContained); 168 | 169 | 参数: 170 | >aNode 要检测的元素 171 | >aPartlyContained 是否检测部分包含(true:检测部分包含;false:检测完全包含) 172 | 173 | 返回值: 174 | >true 包含/部分包含 175 | >false 不包含/完全包含 176 | -------------------------------------------------------------------------------- /posts/drafts/browser-apis/dom/selector-apis.md: -------------------------------------------------------------------------------- 1 | Selector APIs 2 | ============ 3 | 4 | 方法 5 | ---- 6 | 7 | ###1.getElementById("ID") 8 | 9 | 通过指定的 `id` 属性值搜索目标元素。 10 | 11 | 可用于: 12 | 13 | + document 14 | 15 | 返回值: 16 | >node 17 | 18 | ###2.getElementsByName("name") 19 | 20 | 通过指定的 `name` 属性值搜索目标元素。 21 | 22 | 可用于: 23 | 24 | + document 25 | 26 | 返回值: 27 | >nodeList 28 | 29 | ###3.getElementsByClassName("class") 30 | 31 | 通过指定的 class 属性值搜索目标元素。 32 | 33 | 可用于: 34 | 35 | + document 36 | + element 37 | 38 | 返回值: 39 | >nodeList 40 | 41 | ###4.getElementsByTagName("tag") 42 | 43 | 通过指定的 HTML tag 搜索目标元素。 44 | 45 | 可用于: 46 | 47 | + document 48 | + element 49 | 50 | 返回值: 51 | >nodeList 52 | 53 | ###5.querySelector("selector") 54 | 55 | 通过指定的 selector 搜索目标元素。 56 | 57 | 可用于: 58 | 59 | + document 60 | + element 61 | 62 | 返回值: 63 | >node 64 | 65 | ###6.querySelectorAll("selector") 66 | 67 | 通过指定的 selector 搜索目标元素。 68 | 69 | 可用于: 70 | 71 | + document 72 | + element 73 | 74 | 返回值: 75 | >nodeList 76 | 77 | 返回值 78 | ------ 79 | 80 | ###1.node 81 | 82 | 单个节点,可直接访问其属性或调用其方法。 83 | 84 | ###2.nodeList 85 | 86 | 节点列表,类似于数组。nodeList.length 属性代表了节点的个数。可以通过处理数组的方法访问每个节点。 87 | 88 | 行为 89 | ---- 90 | 91 | 以下四个方法的返回值是 __动态__ 的: 92 | 93 | + getElementById("id") 94 | + getElementByName("name") 95 | + getElementsByClassName("class") 96 | + getElementsByTagName("tag") 97 | 98 | 当 HTML 文档结构发生改变时,函数的返回值可能会改变。示例代码: 99 | 100 | // HTML 101 |
1
102 |2
103 | // JS 104 | var target=document.getElementsByClassName("target"); 105 | var len=target.length; // len=1 106 | // 修改2
的 class 107 | document.getElementsByTagName("p")[1].className="target"; 108 | // 重新读取 target.length 109 | len=target.length; // len=2 110 | 111 | 另外两个方法只会读取执行时的文档状态: 112 | 113 | + querySelector("selectors") 114 | + querySelectorAll("selectors") 115 | 116 | 示例代码: 117 | 118 | // HTML 119 |1
120 |2
121 | // JS 122 | var target=document.querySelectAll(".target"); 123 | var len=target.length; // len=1 124 | // 修改2
的 class 125 | document.getElementsByTagName("p")[1].className="target"; 126 | // 重新读取 target.length 127 | len=target.length; // len=1 128 | -------------------------------------------------------------------------------- /posts/drafts/browser-apis/event.md: -------------------------------------------------------------------------------- 1 | 事件 2 | === 3 | 4 | onabort 5 | 6 | 当用户中止加载时触发。 7 | 8 | onafterprint 9 | 10 | 打印结束或打印预览结束时触发。 11 | 12 | onbeforedeactivate 13 | 14 | onbeforeprint 15 | 16 | 打印开始或打印预览开始前触发。 17 | 18 | onblur 19 | 20 | 当对象失去焦点时触发。 21 | 22 | onchange 23 | 24 | 当对象的内容或选择部分改变时触发。 25 | 26 | onclick 27 | 28 | 当用户在对象上点击鼠标左键时触发。 29 | 30 | oncontextmenu 31 | 32 | 当用户在对象上点击鼠标右键时触发。 33 | 34 | ondbclick 35 | 36 | 当用户在对象上点击鼠标双击左键时触发。 37 | 38 | ondrag 39 | 40 | 当对象被拖动时触发。 41 | 42 | ondragend 43 | 44 | 当拖动对象被释放时触发。 45 | 46 | ondragenter 47 | 48 | 当拖动对象进入放置区域时触发。 49 | 50 | ondragleave 51 | 52 | 当拖动对象离开放置区域时触发。 53 | 54 | ondragover 55 | 56 | 当拖动对象位于放置区域中时触发。 57 | 58 | ondragstart 59 | 60 | 当拖动对象被拖动时触发。 61 | 62 | ondrop 63 | 64 | 当拖动对象被放置到目标对象时由目标对象触发。 65 | 66 | onerror 67 | 68 | 当对象载入出错时触发。 69 | 70 | onfocus 71 | 72 | 当对象获取焦点时触发。 73 | 74 | onfocusin 75 | 76 | 当为对象设置焦点时触发。 77 | 78 | onfocusout 79 | 80 | 当为对象取消焦点时触发。 81 | 82 | onhashchange 83 | 84 | 当 URL 中的锚信息(从 # 开始的部分)改变时触发。 85 | 86 | onhelp 87 | 88 | 当请求帮助信息(点击 F1)时触发。 89 | 90 | oninput 91 | 92 | 当修改文本输入框(input textarea)的内容时触发。 93 | 94 | onkeydown 95 | 96 | 当按下按键时触发。 97 | 98 | onkeypress 99 | 100 | 当点击按键时触发。 101 | 102 | onkeyup 103 | 104 | 当释放按键时触发。 105 | 106 | onload 107 | 108 | 当对象载入完成时触发。 109 | 110 | onmessage 111 | 112 | 当接收到 postMessage 发送的消息是触发。 113 | 114 | onmousedown 115 | 116 | 当在对象上按下鼠标任意按键时触发。 117 | 118 | onmousemove 119 | 120 | 当在对象上移动鼠标指针时触发。 121 | 122 | onmouseout 123 | 124 | 当鼠标指针离开对象边界时触发。 125 | 126 | onmouseover 127 | 128 | 当鼠标指针位于对象上方时触发。 129 | 130 | onmouseup 131 | 132 | 当在对象上释放鼠标任意按键时触发。 133 | 134 | onmousewhell 135 | 136 | 当在对象上滚动鼠标滚轮时触发。 137 | 138 | onmspointercancel 139 | 140 | 当鼠标指针无效时触发。 141 | 142 | onoffline 143 | 144 | 当浏览器离线时触发。 145 | 146 | ononline 147 | 148 | 当浏览器在线时触发。 149 | 150 | onreset 151 | 152 | 当表单被重置时触发。 153 | 154 | onscroll 155 | 156 | 当页面滚动时触发。 157 | 158 | onselect 159 | 160 | 当当前选中内容改变时触发。 161 | 162 | onstorage 163 | 164 | 当 Web Storage 更新时触发。 165 | 166 | onunload 167 | 168 | 当卸载对象时触发。 -------------------------------------------------------------------------------- /posts/drafts/css/css.md: -------------------------------------------------------------------------------- 1 | CSS 参考 2 | ======== 3 | 4 | 概述 5 | ---- 6 | 7 | CSS(Cascading Style Sheets,层叠样式表)指的是一系列的 CSS 样式。样式定义了 HTML 元素的显示规则(如 字体、颜色、尺寸等)。 8 | 9 | CSS 的最新标准为 CSS 2.1,CSS3 标准还在制定和发展中。 10 | 11 | ###内容与表现 12 | 13 | 早期的 HTML 中,仅有 `` 等基本的元素,它们不仅描述了页面的内容,还决定了内容的外观表现。开发人员开始不断地向 HTML 中添加新的标签(如 `` `
段落的文本显示为红色
26 | 27 | 内联样式只对当前的元素有效。 28 | 29 | ####2.内部样式 30 | 31 | 在 `` 元素内定义 ` 38 | 39 | 在内部样式中,可以为当前页面中的任意元素定义样式规则。 40 | 41 | ####3.外部样式 42 | 43 | 外部样式的规则记录在一个 `.css` 文件中,并通过 `` 元素中的 `` 元素引入到网页中: 44 | 45 | 46 | 47 | 在外部样式中,可以为所有引用该样式文件的页面中的任意元素定义样式规则。 48 | 49 | __注意:__ 50 | 51 | 建议所有的样式规则都写在外部样式表中,这种方式有许多益处: 52 | 53 | 1. 所有样式都在独立的文件中,方便修改和查找 54 | 2. 外部样式表可以被多个 HTML 文档引用,其中的样式可以在多个页面共享 55 | 3. 在 HTML 中可以简单地切换外部样式文件(网站改版或换肤功能) 56 | 57 | ###层叠、优先权与继承 58 | 59 | HTML 元素同时被多组 CSS 指定了样式,称为 __层叠__ 。 60 | 61 | // style.css 62 | p{ 63 | color:red; 64 | } 65 | // index.html 66 | ... 67 | 68 | 73 | ... 74 |some text
75 | 76 | 这段代码中的 `` 元素同时受到三组颜色属性的控制,它的文本会是什么颜色呢?
77 |
78 | 在多组样式同时作用于一个元素时,会依据 __优先权__ 来选择应用哪一个样式的规则。
79 |
80 | 网页中同时存在的样式可能有三类,共 5 组:
81 |
82 | 1. 浏览器默认样式
83 | 2. 网页定义的样式(包括 内联样式、内部样式和外部样式)
84 | 3. 用户自定义样式(通过 custom.css 或通过浏览器插件设置的样式)
85 |
86 | 参考:user stylesheet
87 |
88 | 优先权从高到低依次为:
89 |
90 | 1. 用户自定义样式
91 | 2. 内联样式
92 | 3. 内部样式
93 | 4. 外部样式
94 | 5. 浏览器默认样式
95 |
96 | 附加规则:
97 |
98 | + 同一个 `style` 属性中,同一个内部或外部样式中的相同或不同样式组中,后定义的样式规则优先权高
99 | + 如果页面通过 `` 元素引用了多个外部样式文件,最后引用的样式文件优先权高
100 | + 内部样式和外部样式的位置?
101 | + @import 引入的样式?
102 |
103 | __继承__ 是来自面向对象的概念,CSS 中的继承有如下特点:
104 |
105 | + 外部元素(父元素,祖先元素)中定义的样式规则会同时应用于内部元素(子元素,后代元素)
106 | + 子元素中定义的样式规则会取代父元素中定义的同一规则
107 |
108 | ###语法规则
109 |
110 | __CSS 规则__ 的语法如下:
111 |
112 | selector{
113 | declaration1;
114 | declaration2;
115 | ...
116 | declarationN;
117 | }
118 |
119 | 上面的代码称为一条 CSS 规则。每个规则分为两个部分:
120 |
121 | 1. 选择器
122 | 选择器通过一系列的规则,指定了应用当前样式规则的目标元素。
123 | 2. 声明列表
124 | 列表中包含了一系列的样式声明。样式声明列表需要包含在 `{}`中。
125 |
126 | __样式声明__ 由属性和值两部分组成:
127 |
128 | property:value;
129 |
130 | 属性名和属性值通常为小写字母,每条样式声明都必须以 `;` 结尾。
131 |
132 | __CSS 注释__ 的语法如下:
133 |
134 | /* CSS 单行注释 */
135 |
136 | 注释可以是单行的,也可以是多行的。
137 |
138 | /*
139 | * CSS
140 | * 多行注释
141 | */
142 |
143 | ###颜色和单位
144 |
145 | 参考:css_color css_units
146 |
147 | ###选择器
148 |
149 | 参考:css_selectors
150 |
151 | ###样式属性
152 |
153 | 参考:css_properties
--------------------------------------------------------------------------------
/posts/drafts/css/css_animation.md:
--------------------------------------------------------------------------------
1 | 动画(animation)
2 | ==============
3 |
4 | @keyframes
5 | ----------
6 |
7 | 定义多个关键帧。
8 |
9 | @keyframes name{
10 | from{top:0px;}
11 | to{top:200px;}
12 | }
13 |
14 | 属性:
15 |
16 | 1.name 定义动画名称
17 | 2.keyframes 定义关键帧的位置
18 | >属性值:
19 | >1.百分值
20 | >2.from=0%
21 | >3.to=100%
22 | 3.styles 定义关键帧的样式属性
23 |
24 | animation-name
25 | --------------
26 |
27 | 定义动画的名称。
28 |
29 | animation-duration
30 | ------------------
31 |
32 | 定义动画的长度。
33 |
34 | 属性值:
35 |
36 | 1. time 默认为 0,无动画效果(单位:s)
37 |
38 | animation-timing-function
39 | -------------------------
40 |
41 | 定义动画的速度曲线。
42 |
43 | animation-deley
44 | ---------------
45 |
46 | 定义动画的延迟。
47 |
48 | animation-iteration-count
49 | -------------------------
50 |
51 | 定义动画的播放次数(默认为 1)。
52 |
53 | animation-derection
54 | -------------------
55 |
56 | 定义动画是否循环反向播放。
57 |
58 | 属性值:
59 |
60 | 1. normal 不反向播放(默认)
61 | 2. alternate 循环反向播放
62 |
63 | animation-play-state
64 | --------------------
65 |
66 | 设置动画的播放状态。
67 |
68 | 属性值:
69 |
70 | 1. paused 暂停
71 | 2. running 播放
72 |
73 | animation
74 | ---------
75 |
76 | 在同一个声明中设置动画的属性。
77 |
78 | 可包括的属性:
79 |
80 | + animation-name
81 | + animatin-duration
82 | + animation-timing-function
83 | + animation-deley
84 | + animation-iteration-count
85 | + animation-direction
--------------------------------------------------------------------------------
/posts/drafts/css/css_background.md:
--------------------------------------------------------------------------------
1 | 背景(background)
2 | ===============
3 |
4 | background-attachment
5 | ---------------------
6 |
7 | 设置背景图像是否随页面滚动。
8 |
9 | 属性值:
10 |
11 | 1. scroll 随页面滚动(默认)
12 | 2. fixed 不随页面滚动
13 |
14 | background-color
15 | ----------------
16 |
17 | 设置背景色。
18 |
19 | 属性值:
20 |
21 | 1. transparent 透明(默认)
22 | 2. css_color
23 |
24 | background-image
25 | ----------------
26 |
27 | 设置背景图像。
28 |
29 | 属性值:
30 |
31 | 1. none 无背景图像
32 | 2. url("url") 设置背景图像的路径
33 |
34 | background-position
35 | -------------------
36 |
37 | 设置背景图像的起始位置。
38 |
39 | 属性值:
40 |
41 | 1.top|center|bottom left|center|right 的组合。如果仅设置一个值,第二个为 center
42 |
43 | 2.x% y% 水平位置和垂直位置。如果仅设置一个值,第二个为 50%
44 |
45 | 3.x y 尺寸值。如果仅设置一个值,第二个为 50%
46 |
47 | 默认位置为 (0%,0%)。
48 |
49 | background-repeat
50 | -----------------
51 |
52 | 设置背景图像的平铺方式。
53 |
54 | 属性值:
55 |
56 | 1. repeat 在水平方向和垂直方向平铺
57 | 2. repeat-x 在水平方向平铺
58 | 3. repeat-y 在垂直方向平铺
59 | 4. no-repeat 不平铺
60 |
61 | background-clip
62 | ---------------
63 |
64 | 设置背景的绘制区域。
65 |
66 | 属性值:
67 |
68 | 1. border-box 包括边框的区域(默认)
69 | 2. padding-box 包括内边距的区域
70 | 3. context-box 包括内容的区域
71 |
72 | background-origin
73 | -----------------
74 |
75 | 设置 background-position 的定位依据。
76 |
77 | 属性值:
78 |
79 | 1. border-box 包括边框的区域(默认)
80 | 2. padding-box 包括内边距的区域
81 | 3. context-box 包括内容的区域
82 |
83 | background-size
84 | ---------------
85 |
86 | 设置背景图像的尺寸(缩放)。
87 |
88 | 属性值:
89 |
90 | 1. x y 宽度和高度。如果仅设置一个值,另一个为 auto
91 | 2. x% y% 百分值。如果仅设置一个值,另一个为 auto
92 | 3. cover 缩放图像,填充整个背景区域(1:1 缩放)
93 | 4. contain 缩放图像,填充整个背景区域(非 1:1 缩放)
94 |
95 | background
96 | ----------
97 |
98 | 在同一个声明中设置背景属性。
99 |
100 | 可包括的属性:
101 |
102 | + background-color
103 | + background-position
104 | + background-size
105 | + background-repeat
106 | + background-origin
107 | + background-clip
108 | + background-attachment
109 | + background-image
110 |
111 | 多重背景
112 | -------
113 |
114 | ###1.分组声明
115 |
116 | 在各个 background-* 属性中声明多组属性,每组对应一个背景的声明:
117 |
118 | background-image:url("image1"),url("image2");
119 | background-position:top,bottom;
120 | ...
121 |
122 | ###2.合并声明
123 |
124 | 在同一个 background 属性中声明多组属性:
125 |
126 | background:url("image1") top,url("image2") bottom;
--------------------------------------------------------------------------------
/posts/drafts/css/css_border-image.md:
--------------------------------------------------------------------------------
1 | 图像边框(border-image)
2 | =====================
3 |
4 | border-image-outset
5 | ===================
6 |
7 | 设置边框图像超出边框的量。
8 |
9 | 属性值:
10 |
11 | + 尺寸值
12 | + border-width 的倍数
13 |
14 | 有四种设置方式,分别代表顶部、右侧、底部及左侧的 outset 值。
15 |
16 | border-image-repeat
17 | ===================
18 |
19 | 设置边框图像的呈现方式。
20 |
21 | 属性值:
22 |
23 | 1. stretch 拉伸
24 | 2. repeat 平铺
25 | 3. round 类似于 repeat。无法平铺时,会对图像进行缩放
26 |
27 | border-image-slice
28 | ==================
29 |
30 | ??
31 |
32 | border-image-source
33 | ===================
34 |
35 | 设置边框图像的 URL。
36 |
37 | 属性值:
38 |
39 | 1. url("url") 用作边框图像的资源
40 |
41 | border-image-width
42 | ==================
43 |
44 | ??
45 |
46 | border-image
47 | ============
48 |
49 | 在同一个声明中设置边框图像属性。
50 |
51 | 可包括的属性:
52 |
53 | + border-image-source
54 | + border-image-slice
55 | + border-image-width
56 | + border-image-outset
57 | + border-image-repeat
--------------------------------------------------------------------------------
/posts/drafts/css/css_border-radius.md:
--------------------------------------------------------------------------------
1 | 圆角(border-radius)
2 | ==================
3 |
4 | border-top-left-radius
5 | ----------------------
6 |
7 | 设置边框左上角的外形。
8 |
9 | 属性值:
10 |
11 | 1. 尺寸值 圆角半径
12 | 2. 百分值 乘以边框宽/高度,作为圆角的半径
13 |
14 | 属性值组合:
15 |
16 | 1. a b/a% b%/a% 椭圆的水平半径和垂直半径
17 | 2. a 圆的半径
18 |
19 | border-top-right-radius
20 | ----------------------
21 |
22 | 设置边框右上角的外形。
23 |
24 | border-bottom-left-radius
25 | -------------------------
26 |
27 | 设置边框左下角的外形。
28 |
29 | border-bottom-right-radius
30 | --------------------------
31 |
32 | 设置边框右上角的外形。
33 |
34 | border-radius
35 | -------------
36 |
37 | 在同一个声明中设置内边距属性。
38 |
39 | 可包括的属性:
40 |
41 | + border-top-left-radius
42 | + border-top-right-radius
43 | + border-bottom-right-radius
44 | + border-bottom-left-radius
45 |
46 | 可包括的属性组合:
47 |
48 | 1.a b c d / e f g h
49 | >top-left:a e;
50 | >top-right:b f;
51 | >bottom-right:c g;
52 | >bottom-left:d h;
53 |
54 | 2.a b c d / e f g
55 | >top-left:a e;
56 | >top-right:b f;
57 | >bottom-right:c g;
58 | >bottom-left:d f;
59 |
60 | 3.a b c d / e f
61 | >top-left:a e;
62 | >top-right:b f;
63 | >bottom-right:c e;
64 | >bottom-left:d f;
65 |
66 | 3.a b c d / e
67 | >top-left:a e;
68 | >top-right:b e;
69 | >bottom-right:c e;
70 | >bottom-left:d e;
71 |
72 | ...
73 | a b c d | a b c | a b | a
74 | *
75 | e f g h | e f g | e f | e
76 | ...
77 |
78 | 4.a b c d
79 | >top-left:a a;
80 | >top-right:b b;
81 | >bottom-right:c c;
82 | >bottom-left:d d;
83 |
84 | 5.a b c
85 | >top-left:a a;
86 | >top-right:b b;
87 | >bottom-right:c c;
88 | >bottom-left:b b;
89 |
90 | 6.a b
91 | >top-left:a a;
92 | >top-right:b b;
93 | >bottom-right:a a;
94 | >bottom-left:b b;
95 |
96 | 7.a
97 | >top-left:a;
98 | >top-right:a;
99 | >bottom-right:a;
100 | >bottom-left:a;
--------------------------------------------------------------------------------
/posts/drafts/css/css_border.md:
--------------------------------------------------------------------------------
1 | 边框(border)
2 | ===========
3 |
4 | border-top-width
5 | ----------------
6 |
7 | 设置顶部边框的宽度。
8 |
9 | 属性值:
10 |
11 | 1. thin 细
12 | 2. medium 中等(默认)
13 | 3. thick 粗
14 | 4. 尺寸值
15 |
16 | border-top-style
17 | ----------------
18 |
19 | 设置顶部边框的样式。
20 |
21 | 属性值:
22 |
23 | 1. none 无边框
24 | 2. hidden 与 none 类似。在应用于表格时,可以解决边框冲突
25 | 3. dotted 点状线
26 | 4. dashed 虚线
27 | 5. solid 实线
28 | 6. double 双线
29 | 7. groove 3D 凹陷
30 | 8. ridge 3D 突出
31 | 9. inset 3D inset
32 | 10. outset 3D outset
33 |
34 | border-top-color
35 | ----------------
36 |
37 | 设置顶部边框的颜色。
38 |
39 | 属性值:
40 |
41 | 1. transparent 透明(默认)
42 | 2. 颜色值
43 |
44 | bottom-top
45 | ----------
46 |
47 | 在同一个声明中设置顶部边框属性。
48 |
49 | 可包括的属性:
50 |
51 | + border-top-width
52 | + border-top-style
53 | + border-top-color
54 |
55 | border-right-width
56 | -
57 |
58 | border-right-style
59 | -
60 |
61 | border-right-color
62 | -
63 |
64 | bottom-right
65 | -
66 |
67 | border-bottom-width
68 | -
69 |
70 | border-bottom-style
71 | -
72 |
73 | border-bottom-color
74 | -
75 |
76 | bottom-bottom
77 | -
78 |
79 | border-left-width
80 | -
81 |
82 | border-left-style
83 | -
84 |
85 | border-left-color
86 | -
87 |
88 | bottom-left
89 | -
90 |
91 | ...
92 |
93 | border-color
94 | ------------
95 |
96 | 在同一个声明中设置边框颜色。
97 |
98 | 可包括的属性:
99 |
100 | + border-top-color
101 | + border-right-color
102 | + border-bottom-color
103 | + border-left-color
104 |
105 | 有四种设置方式:
106 |
107 | 1. a b c d 分别设置顶部、右侧、底部和左侧的边框颜色
108 | 2. a b c 分别设置顶部、左右和底部的边框颜色
109 | 3. a b 分别设置顶部和底部、左右的边框颜色
110 | 4. a 一次设置四个边框颜色
111 |
112 | border-style
113 | ------------
114 |
115 | 在同一个声明中设置边框样式。
116 |
117 | 可包括的属性:
118 |
119 | + border-top-style
120 | + border-right-style
121 | + border-bottom-style
122 | + border-left-style
123 |
124 | 有四种设置方式:
125 |
126 | 1. a b c d 分别设置顶部、右侧、底部和左侧的边框样式
127 | 2. a b c 分别设置顶部、左右和底部的边框样式
128 | 3. a b 分别设置顶部和底部、左右的边框样式
129 | 4. a 一次设置四个边框样式
130 |
131 | border-width
132 | ------------
133 |
134 | 在同一个声明中设置边框宽度。
135 |
136 | 可包括的属性:
137 |
138 | + border-top-width
139 | + border-right-width
140 | + border-bottom-width
141 | + border-left-width
142 |
143 | 有四种设置方式:
144 |
145 | 1. a b c d 分别设置顶部、右侧、底部和左侧的边框宽度
146 | 2. a b c 分别设置顶部、左右和底部的边框宽度
147 | 3. a b 分别设置顶部和底部、左右的边框宽度
148 | 4. a 一次设置四个边框宽度
149 |
150 | ...
151 |
152 | border
153 | ------
154 |
155 | 在同一个声明中设置边框属性。
156 |
157 | 可包括的属性:
158 |
159 | + border-width
160 | + border-style
161 | + border-color
--------------------------------------------------------------------------------
/posts/drafts/css/css_box-shadow.md:
--------------------------------------------------------------------------------
1 | 盒阴影(box-shadow)
2 | =================
3 |
4 | box-shadow
5 | ----------
6 |
7 | 设置 box 的阴影。
8 |
9 | 可包括的属性:
10 |
11 | + h-shadow 阴影水平位置(右为正,左为负。默认为 0)
12 | + v-shadow 阴影垂直位置(下为正,上为负。默认为 0)
13 | + blur 模糊距离(可选,默认为 0)
14 | + spread 阴影尺寸(可选)
15 | + color 阴影颜色(可选,默认与边框颜色相同)
16 | + inset 内阴影(可选,不设置则为外阴影)
17 |
18 | 多重阴影
19 | -------
20 |
21 | 在 box-shadow 中设置多组阴影数据,即可实现多重阴影:
22 |
23 | box-shadow:2px 2px 5px #CCC inset,5px 5px 10px #AAF;
--------------------------------------------------------------------------------
/posts/drafts/css/css_color.md:
--------------------------------------------------------------------------------
1 | CSS 颜色
2 | ========
3 |
4 | CSS 中的许多属性都和颜色有关,如:
5 |
6 | color 文本颜色
7 | background-color 背景颜色
8 | border-color 边框颜色
9 | outline-color 外框颜色
10 | ...
11 |
12 | 颜色表示方式
13 | -----------
14 |
15 | ###1.颜色名
16 |
17 | 这是最常见的颜色表示方式,使用浏览器预定义的名称来表示颜色:
18 |
19 | color:red;
20 |
21 | 详细的颜色名称列表,请参考:[Color Name List](http://www.ncdesign.org/html/samp/s030list.htm) or [HTML Color Chart](http://www.html-color-names.com/color-chart.php)
22 |
23 | ###2.十六进制
24 |
25 | 十六颜色使用三组十六进制(00-FF)数字分别代表红色(R,red)、绿色(G,green)和蓝色(B,blue):
26 |
27 | color:#096A53;
28 |
29 | 如果三组十六进制数的两个字符相同,则可以使用简写形式:
30 |
31 | color:#66AA99;
32 | // 等于
33 | color:#6A9;
34 |
35 | ###3.RGB
36 |
37 | RGB 颜色同样使用三组数字(0-255)分别代表红色、绿色和蓝色:
38 |
39 | color:rgb(80,150,30);
40 |
41 | ###4.RGBA
42 |
43 | RGBA 颜色在 RGB 颜色的基础上扩展了透明(alpha)通道:
44 |
45 | color:rgba(80,150,30,0.3);
46 |
47 | 透明数值的范围是 0.0(完全透明)-1.0(完全不透明)。
48 |
49 | ###5.HSL
50 |
51 | HSL 颜色使用三组数字分别代表色调(H,hue)、饱和度(S,saturation)和亮度(L,lightness):
52 |
53 | color:hsl(240,80%,60%);
54 |
55 | 色调的范围是 0-360(0/360 红色,120 绿色,240 蓝色),代表色盘的角度;
56 | 饱和度的范围是 0%-100%(0% 灰色,100% 全彩色);
57 | 亮度的范围也是 0%-100%(0% 黑色,100% 白色)。
58 |
59 | ###6.HSLA
60 |
61 | HSLA 颜色在 HSL 颜色的基础上扩展了透明通道:
62 |
63 | color:hsla(240,80%,60%,0.3);
--------------------------------------------------------------------------------
/posts/drafts/css/css_column.md:
--------------------------------------------------------------------------------
1 | 多列(multi-column)
2 | =================
3 |
4 | column-count
5 | ------------
6 |
7 | 设置元素内容划分的列数。
8 |
9 | 属性值:
10 |
11 | 1. auto 根据 column-width 等属性自动计算
12 | 2. n 划分为 n 列
13 |
14 | column-width
15 | ------------
16 |
17 | 设置列宽。
18 |
19 | 1. auto 自动计算列宽
20 | 2. 尺寸值
21 |
22 | column-span
23 | -----------
24 |
25 | 设置元素所跨列数(默认为 1)。
26 |
27 | 1. all 横跨所有列
28 | 2. n 横跨 n 列
29 |
30 | column-fill
31 | -----------
32 |
33 | ??
34 |
35 | column-gap
36 | ----------
37 |
38 | 设置列的间离。
39 |
40 | 属性值:
41 |
42 | 1. normal 默认(1 em)
43 | 2. 尺寸值
44 |
45 | column-rule-width
46 | -----------------
47 |
48 | 设置列分割线的宽度。
49 |
50 | 属性值:
51 |
52 | 1. thin
53 | 2. medium
54 | 3. thick
55 | 4. 尺寸值
56 |
57 | column-rule-style
58 | -----------------
59 |
60 | 设置列分割线的样式。
61 |
62 | column-rule-color
63 | -----------------
64 |
65 | 设置列分割线的颜色。
66 |
67 | column-rule
68 | -----------
69 |
70 | 在同一个声明中设置列分割线属性。
71 |
72 | 可包括的属性:
73 |
74 | + column-rule-width
75 | + column-rule-style
76 | + column-rule-color
--------------------------------------------------------------------------------
/posts/drafts/css/css_content.md:
--------------------------------------------------------------------------------
1 | 内容生成(content)
2 | ================
3 |
4 | content
5 | -------
6 |
7 | 与 :before 和 :after 伪元素配合,用于插入内容。
8 |
9 | elmt:before{
10 | content:"abc";
11 | ...
12 | }
13 |
14 | 属性值:
15 |
16 | 1. "string" 插入的文本
17 | 2. url("url") 插入的文件
18 | 3. attr(attr) 获取并插入 elmt 的 attr 属性值
19 | 4. counter(counter) 获取并插入计数器 counter 的值
20 |
21 | 使用 content 插入内容后,还可以继续为插入的内容添加样式:
22 |
23 | elmt:before{
24 | content:"abc";
25 | color:blue;
26 | ...
27 | }
28 |
29 | counter-reset
30 | -------------
31 |
32 | 创建或重置计数器。
33 |
34 | 属性值:
35 |
36 | 1. none 不重置计数器
37 | 2. counter n 定义计数器 counter 并指定初始值 n(可选,默认为 0)
38 |
39 | counter-increment
40 | -----------------
41 |
42 | 设置计数器的增量。
43 |
44 | 属性值:
45 |
46 | 1. none 无计数器增量(默认)
47 | 2. counter n 设置计数器 counter 的增量为 n(正数、负数或 0。可选,默认为 1)
48 |
49 | quotes
50 | ------
51 |
52 | 设置包含嵌套引用的引号。
53 |
54 | 属性值:
55 |
56 | 1. none
57 | 2. a b c d 一级嵌套使用 ab,二级嵌套使用 cd
58 |
59 | 可用的引号字符:
60 |
61 | + " (%#34;) 双引号
62 | + ' (%#39;) 单引号
63 | + < (%#8249;) 左尖括号
64 | + > (%#8250;) 右尖括号
65 | + 《 (%#171;) 左书名号
66 | + 》 (%#187;) 右书名号
67 | + ` (%#8216;) 左单引号
68 | + ˊ (%#8217;) 右单引号
69 | + 〝 (%#8220;) 左双引号
70 | + 〞 (%#8221;) 右双引号
71 | + ** (%#8222;) 双引号
--------------------------------------------------------------------------------
/posts/drafts/css/css_dimension.md:
--------------------------------------------------------------------------------
1 | 尺寸(dimension)
2 | ==============
3 |
4 | width
5 | -----
6 |
7 | 设置元素的宽度。
8 |
9 | 属性值:
10 |
11 | 1. auto 自动计算宽度(默认)
12 | 2. 尺寸值
13 | 3. 百分值
14 |
15 | min-width
16 | ---------
17 |
18 | 设置元素的最小宽度(实际宽度等于或大于此值,不会小于此值)
19 |
20 | 属性值:
21 |
22 | 1. 尺寸值
23 | 2. 百分值
24 |
25 | max-width
26 | ---------
27 |
28 | 设置元素的最大宽度(实际宽度等于或小于此值,不会打于此值)
29 |
30 | height
31 | ------
32 |
33 | 设置元素的高度。
34 |
35 | min-height
36 | ----------
37 |
38 | 设置元素的最小高度(实际高度等于或大于此值,不会小于此值)
39 |
40 | max-height
41 | ----------
42 |
43 | 设置元素的最大高度(实际高度等于或小于此值,不会打于此值)
--------------------------------------------------------------------------------
/posts/drafts/css/css_filter.md:
--------------------------------------------------------------------------------
1 | opacity
2 | -------
3 |
4 | 设置元素的透明度。
5 |
6 | 属性值:
7 |
8 | 1. alpha 透明度(0.0-1.0 0.0 代表完全透明,1.0 代表完全不透明)
9 |
10 | filter
11 | ------
12 |
13 | 滤镜,主要应用于图像。
14 |
15 | 属性值:
16 |
17 | 1.grayscale() 灰度
18 |
19 | 2.sepia() 褐色
20 |
21 | 3.saturate() 饱和度
22 |
23 | 4.hue-rotate() 色向反转
24 |
25 | 5.invert() 反色
26 |
27 | 6.opacity() 透明度
28 |
29 | 7.brightness() 亮度
30 |
31 | 8.contrast() 对比度
32 |
33 | 9.blur() 模糊
34 |
35 | 10.drop-shadow() 阴影
--------------------------------------------------------------------------------
/posts/drafts/css/css_font-face.md:
--------------------------------------------------------------------------------
1 | 自定义字体(@font-face)
2 | ====================
3 |
4 | 格式支持([caniuse.com](caniuse.com/http://caniuse.com/#feat=fontface "font-face")):
5 |
6 | + eot IE: 6+
7 | + woff IE: 9+; FF: 3.6+; Chrome: 5+; Safari: 5.1+; Opera: 11.1+;
8 | + SVG Chrome: 4+; Safari: 3.2+; Opera: 9.0+
9 | + ttf/otf IE 9+(partial); FF: 3.5+; Chrome: 4.0+; Safari: 3.1+; Opera: 10.0+
10 |
11 | @font-face
12 | ----------
13 |
14 | 用于声明自定义字体:
15 |
16 | @font-face{
17 | font-family:font-name;
18 | src:url("font-file");
19 | ...
20 | }
21 |
22 | ###@font-face 声明中必须有的属性:
23 |
24 | 1.font-family
25 |
26 | 用于定义字体的名称,在引用处通过 `font-family` 属性使用该字体。
27 |
28 | // 引用自定义字体
29 | font-family:font-name;
30 |
31 | 2.src
32 |
33 | 用于定义字体文件的 URL。
34 |
35 | 可定义多组 URL 值,用于设置不同格式的字体,来支持不同的浏览器。
36 |
37 | src:url("file1"),url("file2");
38 |
39 | ###@font-face 声明中可选的属性:
40 |
41 | 可选属性用于定义自定义字体的默认样式。
42 |
43 | + font-stretch
44 | + font-style
45 | + front-weight
46 | + unicode-range
47 |
48 | 设置字体支持的 UNICODE 字符范围。
49 |
50 | __注意:__ @font-face 声明需要放置到所有引用该字体的位置之前,以保证字体在引用时已经加载完成。
--------------------------------------------------------------------------------
/posts/drafts/css/css_font.md:
--------------------------------------------------------------------------------
1 | 字体(font)
2 | =========
3 |
4 | font-family
5 | -----------
6 |
7 | 设置字体。
8 |
9 | 属性值:
10 |
11 | 1. font_list 字体名称或字体系列名称
12 |
13 | 可设置多个值(使用 `,` 分隔),如果无法识别第一个,会依次向后选择一个支持的字体。如果全部无法识别,则使用默认字体。
14 |
15 | font-size
16 | ---------
17 |
18 | 设置字体大小。
19 |
20 | 属性值:
21 |
22 | 1. xx-small|x-small|small|medium|large|x-large|xx-large 不同的相对尺寸(默认为 medium)
23 | 2. smaller 比父元素更小
24 | 3. larger 比父元素更大
25 | 4. 尺寸值
26 | 5. 百分值 (与父元素的字体大小相乘,作为字体大小)
27 |
28 | font-size-adjust
29 | ----------------
30 |
31 | font-stretch
32 | ------------
33 |
34 | font-style
35 | ----------
36 |
37 | 设置字体样式。
38 |
39 | 属性值:
40 |
41 | 1. normal 标准样式(默认)
42 | 2. italic 斜体
43 | 3. oblique 倾斜
44 |
45 | font-variant
46 | ------------
47 |
48 | 设置是否使用小型大写字母显示文本。
49 |
50 | 属性值:
51 |
52 | 1. none 标准文本(默认)
53 | 2. small-caps 使用小型大写字母
54 |
55 | font-weight
56 | -----------
57 |
58 | 设置文本粗细。
59 |
60 | 属性值:
61 |
62 | 1. normal 默认
63 | 2. bold 粗体
64 | 3. bulder 更粗
65 | 4. lighter 更细
66 | 5. 100|200|...|900 (400=normal,700=bold)
67 |
68 | font
69 | ----
70 |
71 | 在同一个声明中设置字体属性。
72 |
73 | 可包括的属性:
74 |
75 | + font-style
76 | + font-variant
77 | + font-weight
78 | + font-size/line-height
79 | + font-family
80 | + line-height
81 |
82 | 建议使用此顺序指定字体属性。其中的属性均为可选值,但建议至少包括 `font-size` 和 `font-family` 属性。
--------------------------------------------------------------------------------
/posts/drafts/css/css_gradient.md:
--------------------------------------------------------------------------------
1 | 背景渐变(background-gradient)
2 | ============================
3 |
4 | liner-gradient()
5 | ----------------
6 |
7 | 线性渐变。
8 |
9 | background-image:liner-gradient(left,#FFF,#339);
10 |
11 | 可能的参数组合:
12 |
13 | liner-gradient(point/angle,stop1,stop2...)
14 |
15 | point 起点
16 | >top 顶部(从上到下的渐变)
17 | >bottom 底部(从下到上的渐变)
18 | >left 左侧(从左到右的渐变)
19 | >right 右侧(从右到左的渐变)
20 | >top left 左上角(从左上到右下的渐变)
21 | >top right 右上角(从右上到左下的渐变)
22 | >bottom left 右上角(从右上到左下的渐变)
23 | >bottom right 右下角(从右下到左上的渐变)
24 | >不指定该值,则默认为 top
25 |
26 | angle 渐变角度
27 | >45deg 从右侧开始,逆时针45°
28 |
29 | stop 标记位置(color position)
30 | >1.多个 color,不指定位置,则位置平均分布
31 | >>color1,color2=color1 0%,color2 100% 起点为 color1,终点为 color2
32 | >>color1,color2,color3=color1 0%,color2 50%,color3 100% 起点为 color1,中点为 color2,终点为 color3
33 |
34 | >2.多个 color position,按照指定的位置分布颜色
35 | >3.有的 stop 指定了位置,有的未指定,则未指定位置的 stop 平均分布
36 |
37 | radial-gradient()
38 | -----------------
39 |
40 | 径向渐变。
41 |
42 | background-image:radial-gradient(#FFF,#339);
43 |
44 | 可能的参数组合:
45 |
46 | radial-gradient(center,shap size,stop1,stop2...)
47 |
48 | center 渐变中心
49 | >top | center | bottom * left | center | right 的组合
50 | >a b 尺寸值
51 | >a% b% 百分值
52 | >top | center | bottom | a | a% 指定一个值,第二个值为 center/50%
53 | >默认为 center center
54 |
55 | shap 渐变形状
56 | >circle 圆
57 | >ellipse 椭圆(默认)
58 |
59 | size 渐变范围
60 | >closest-side 渐变外围到达最近的边
61 | >farthest-side 渐变外围到达最远的边
62 | >closest-corner 渐变范围到达最近的角
63 | >farthest-corner 渐变范围到达最远的角
64 | >contain 渐变包含在元素框中
65 | >cover 渐变覆盖整个元素框
66 |
67 | repeating-linear-gradient()
68 | ---------------------------
69 |
70 | 重复线性渐变。
71 |
72 | 可能的参数组合:
73 |
74 | repeating-linear-gradient(point,stop1,stop2,stop3,stop4)
75 |
76 | point 起点
77 |
78 | stop 1-4 重复渐变片段(只有 stop1 可省略 position)
79 |
80 | repeating-radial-gradient()
81 | ---------------------------
82 |
83 | 重复径向渐变。
84 |
85 | 可能的参数组合:
86 |
87 | radial-gradient(center,shap size,stop1,stop2,stop3,stop4)
88 |
89 | 属性包含 circle contain 时,会导致 Chrome 崩溃。
10 | 图像地址为:http://www.google.com/images/srpr/logo4w.png
15 | 指定了base:http://www.google.com/ 图像地址为:/images/srpr/logo4w.png ` 代表段落,` ` 等具有语义的标签,使页面的内容可识别。
24 |
25 | ###HTML5带来的变化
26 |
27 | 在近几年的发展中,网页编写风格逐渐趋向统一。
28 | 根据Google的分析数据(` 或 `
` 元素有效。
5 |
6 | list-style-type
7 | ---------------
8 |
9 | 设置列表项标记的样式。
10 |
11 | 属性值:
12 |
13 | 1. none 无标记
14 | 2. disc 实心圆
15 | 3. circle 空心圆
16 | 4. square 实心方块
17 | 5. decimal 数字(1,2,3...)
18 | 6. decimal-leading-zero 0 开头的数字(01,02...)
19 | 7. lower-roman 小写罗马数字(i, ii, iii...)
20 | 8. upper-roman 大写罗马数字(I, II, III...)
21 | 9. lower-alpha 小写英文字母(a,b,c...)
22 | 10. upper-alpha 大写英文字母(A,B,C...)
23 | 11. lower-greek 小写希腊字母(α,β,γ...)
24 | 12. upper-greek
25 | 13. lower-latin 小写拉丁字母(à,á,â...)
26 | 14. upper-latin 大写拉丁字母(À,Á,Â...)
27 | 15. hebrew 希伯来编号
28 | 16. armenian 亚美尼亚编号
29 | 17. georgian 乔治亚编号
30 | 18. cjk-ideographic 表意数字
31 | 19. hiragana 片假名(a,i,u,e,o...)
32 | 20. katakana 片假名(A,I,U,E,O...)
33 | 21. hiragana-iroha 片假名(i,ro,ha,ni,ho...)
34 | 22. katakana-iroha 片假名(I,RI,HA,NI,HO...)
35 |
36 | list-style-image
37 | ----------------
38 |
39 | 将图像设置为列表项标记。
40 |
41 | list-style-image:url("image.png");
42 |
43 | 属性值:
44 |
45 | 1. url(url) 图像的 URL
46 |
47 | list-style-position
48 | -------------------
49 |
50 | 设置列表项标记的位置。
51 |
52 | 属性值:
53 |
54 | 1. outside 位于项目文本外(左)侧(默认)
55 | 2. inside 位于项目文本内
56 |
57 | list-style
58 | ----------
59 |
60 | 在同一个声明中设置列表项标记的样式。
61 |
62 | 可包括的属性:
63 |
64 | + list-style-type
65 | + list-style-position
66 | + list-style-image
--------------------------------------------------------------------------------
/posts/drafts/css/css_margin.md:
--------------------------------------------------------------------------------
1 | 外边距(margin)
2 | =============
3 |
4 | margin-top
5 | ----------
6 |
7 | 设置顶部外边距。
8 |
9 | 属性值:
10 |
11 | 1. auto 自动
12 | 2. 尺寸值
13 | 3. 百分值
14 |
15 | margin-right
16 | ------------
17 |
18 | 设置右侧外边距。
19 |
20 | margin-bottom
21 | -------------
22 |
23 | 设置底部外边距。
24 |
25 | margin-left
26 | -----------
27 |
28 | 设置左侧外边距。
29 |
30 | margin
31 | ------
32 |
33 | 在同一个声明中设置内边距属性。
34 |
35 | 可包括的属性:
36 |
37 | + margin-top
38 | + margin-right
39 | + margin-bottom
40 | + margin-left
41 |
42 | 有四种设置方式:
43 |
44 | 1. a b c d 分别设置顶部、右侧、底部和左侧的外边距
45 | 2. a b c 分别设置顶部、左右和底部的外边距
46 | 3. a b 分别设置顶部和底部、左右的外边距
47 | 4. a 一次设置四个外边距
--------------------------------------------------------------------------------
/posts/drafts/css/css_outline.md:
--------------------------------------------------------------------------------
1 | 轮廓(outline)
2 | ============
3 |
4 | 类似于 border,outline 在元素周围呈现为轮廓线,位于 border 的外侧。与 border 不同的是,outline 不占据任何空间。
5 |
6 | outline-width
7 | -------------
8 |
9 | 设置轮廓的宽度。
10 |
11 | outline-style
12 | -------------
13 |
14 | 设置轮廓的样式。
15 |
16 | outline-color
17 | -------------
18 |
19 | 设置轮廓的颜色。
20 |
21 | outline
22 | -------
23 |
24 | 在同一个声明中设置轮廓属性。
25 |
26 | outline-offset
27 | --------------
28 |
29 | 设置 outline 与 border 的距离。
30 |
31 | 属性值:
32 |
33 | 1. 尺寸值
--------------------------------------------------------------------------------
/posts/drafts/css/css_overflow.md:
--------------------------------------------------------------------------------
1 | 溢出(overflow)
2 | ==============
3 |
4 | overflow
5 | --------
6 |
7 | 设置内容溢出时,元素的行为。
8 |
9 | 属性值:
10 |
11 | 1. visible 溢出部分可见(默认)
12 | 2. hidden 溢出部分不可见
13 | 3. scroll 元素出现滚动条(不论内容是否溢出)
14 | 4. auto 内容溢出时,才出现滚动条
15 |
16 | overflow-x
17 | ----------
18 |
19 | 设置内容溢出时,元素在横向的行为。
20 |
21 | 属性值:
22 |
23 | 1. visible
24 | 2. hidden
25 | 3. scroll
26 | 4. auto
27 | 5. no-display 内容溢出时,隐藏整个元素
28 | 6. no-content 内容溢出时,隐藏所有内容
29 |
30 | overflow-x
31 | ----------
32 |
33 | 设置内容溢出时,元素在纵向的行为。
34 |
35 | overflow-style
36 | --------------
37 |
38 | 设置内容溢出时,元素的滚动方式。
39 |
40 | 属性值:
41 |
42 | 1. auto
43 | 2. scrollbar 滚动条
44 | 3. panner
45 | 4. move 内容可拖动
46 | 5. marquee 内容自动滚动
--------------------------------------------------------------------------------
/posts/drafts/css/css_padding.md:
--------------------------------------------------------------------------------
1 | 内边距(padding)
2 | ==============
3 |
4 | padding-top
5 | -----------
6 |
7 | 设置顶部内边距。
8 |
9 | 属性值:
10 |
11 | 1. auto 自动
12 | 2. 尺寸值
13 | 3. 百分值
14 |
15 | padding-right
16 | -------------
17 |
18 | 设置右侧内边距。
19 |
20 | padding-bottom
21 | --------------
22 |
23 | 设置底部内边距。
24 |
25 | padding-left
26 | ------------
27 |
28 | 设置左侧外边距。
29 |
30 | padding
31 | -------
32 |
33 | 在同一个声明中设置内边距属性。
34 |
35 | 可包括的属性:
36 |
37 | + padding-top
38 | + padding-right
39 | + padding-bottom
40 | + padding-left
41 |
42 | 有四种设置方式:
43 |
44 | 1. a b c d 分别设置顶部、右侧、底部和左侧的内边距
45 | 2. a b c 分别设置顶部、左右和底部的内边距
46 | 3. a b 分别设置顶部和底部、左右的内边距
47 | 4. a 一次设置四个内边距
--------------------------------------------------------------------------------
/posts/drafts/css/css_position.md:
--------------------------------------------------------------------------------
1 | 定位(positioning)
2 | ================
3 |
4 | position
5 | --------
6 |
7 | 设置元素的定位方式。
8 |
9 | 属性值:
10 |
11 | 1. static 正常定位(元素位于正常的文档流中,忽略 top bottom left right 及 z-index 属性)
12 | 2. absolute 绝对定位(相对于 body 元素进行定位,不占据文档流中的位置)
13 | 3. fixed 绝对定位(相对于浏览器窗口进行定位,不占据文档流中的位置)
14 | 4. relative 相对定位(相对于元素原来的位置进行定位,仍占据文档流中的位置)
15 | 5. sticky relative 与 fixed 的结合(元素位于可见位置时,表现为 relative。元素离开可见位置时,表现为 fixed)
16 |
17 | top
18 | ---
19 |
20 | 设置相对定位或绝对定位元素的顶部偏移。
21 |
22 | 属性值:
23 |
24 | 1. auto 自动(默认)
25 | 2. 尺寸值
26 | 3. 百分值
27 |
28 | bottom
29 | ------
30 |
31 | 设置相对定位或绝对定位元素的底部偏移。
32 |
33 | left
34 | ----
35 |
36 | 设置相对定位或绝对定位元素的左侧偏移。
37 |
38 | right
39 | -----
40 |
41 | 设置相对定位或绝对定位元素的右侧偏移。
42 |
43 | z-index
44 | -------
45 |
46 | 设置元素的堆叠顺序(层)。
47 |
48 | 属性值:
49 |
50 | 1. auto 自动(默认,与父元素相同)
51 | 2. 整数
52 |
53 | vertical-align
54 |
55 | 设置元素纵向定位的方式。
56 |
57 | 属性值:
58 |
59 | 1. baseline 位于父元素的基线上(块级元素的顶部,行内元素的底部。默认)
60 | 2. sub 对齐文本底部
61 | 3. super 对齐文本顶部
62 | 4. top 顶端对齐
63 | 5. text-top 与文本顶端对齐
64 | 6. middle 居中
65 | 7. bottom 低端对齐
66 | 8. text-bottom 与文本低端对齐
67 | 9. 尺寸值
68 | 10. 百分值
--------------------------------------------------------------------------------
/posts/drafts/css/css_table.md:
--------------------------------------------------------------------------------
1 | 表格(table)
2 | ==========
3 |
4 | border-collapse
5 | ---------------
6 |
7 | 设置是否合并边框。
8 |
9 | 属性值:
10 |
11 | 1. separate 分离边框(保留 `border-spading` 和 `empty-cells` 的设置)(默认)
12 | 2. collapse 合并边框(忽略 `border-spading` 和 `empty-cells` 的设置)
13 |
14 | border-spacing
15 | --------------
16 |
17 | 设置相邻单元格的边框间距。
18 |
19 | 属性值:
20 |
21 | 1. a 水平间距和垂直间距都设置为 a
22 | 2. a b 水平间距设置为 a,垂直间距设置为 b
23 |
24 | caption-side
25 | ------------
26 |
27 | 设置 `
使用绝对URL:
9 |
11 |
使用相对URL:
14 |
16 |
` 表示图像,`
` 代表有序列表等。
5 |
6 | 这种标签的 __语义化__ (Semantic),是HTML在制定的最初就一直遵守的规则,用来将文本等信息结构化,从而方便理解和使用。
7 |
8 | ###HTML标签语义化的意义
9 |
10 | 1. 有利于搜索引擎的检索(SEO)
11 | 有利于搜索引擎对网页的结构和内容的分析,更容易查找到关键信息。
12 | 2. 便于人的理解
13 | 结构化的HTML文档,更容易被人理解。统一的编写标准,也便于团队协作和进行传播。
14 | 3. 脱离样式时仍然结构清晰
15 | 去掉或丢失样式时,仍保持默认样式,不影响页面的可读性。对于无法有效执行CSS的特殊设备(如手机),也会保持可读的结构。
16 | 4. 有利于特殊群体的阅读
17 | 很可能有访问者需要借助屏幕阅读器等设备来识别网页内容,语义化的页面更容易将有效信息分离出来。
18 |
19 | ###错误的代码风格
20 |
21 | 早期的开发者为了使页面具有丰富的布局,往往使用 `
` 将页面划分成多个部分,甚至嵌套多个 `
` 来实现特殊布局,这是Web开发最黑暗的时期。`
` 标签的作用是以表格的形式呈现数据,而不是用来进行页面布局。
22 |
23 | 在CSS的功能增强之后,又出现了大批 `“DIV+CSS”` 的倡导者(决定写这篇文章之前,我也是其中之一)。虽然这种方式结束了使用 `
` 进行布局的错误,但仍旧没有很好的遵循标签语义化的规则。`
` `