찾다
웹 프론트엔드HTML 튜토리얼《编写高质量代码--Web前端开发修炼之道》读书笔记_html/css_WEB-ITnose

前言

这两周参加公司的新项目,采用封闭式开发 (项目成员在会议室里开发),晚上加班到很晚,所以没时间和精力写原创博客了,今天就分享下这篇《编写高质量代码--Web前端开发修炼之道》读书笔记吧。

 

 

正文

欲精一行,必先通十行。

 

在前端开发这个领域,一专多能更是非常必要的。

 

table布局缺点:

  • 代码量大,结构混乱;
  • 标签语义不明确,对搜索引擎不友好。
  •  

    css布局:div+css,或者(x)html+css。

    代码量少、结构精简、语义清新。

    代码量少,浏览器端下载时间就会更短;

    语义清晰就会对搜索引擎更友好。

     

    先确定html,确定语义的标签,再来选用合适的CSS。

     

    浏览器会根据标签的语义给定一个默认定样式。

    判断网页标签语义是否良好的一个简单方法就是:去掉样式,看网页结构是否组织良好有序,是否仍然有很好的可读性。

    测试下DevTool中有没有禁用网页中的CSS设置?测试下w3c官网去掉样式后的效果。

     

    标签,搜索引擎对其比较敏感,尤其是h1和h2。

     

    当页面内标签无法满足设计需要时,才会适当添加div和span等无语义标签来辅助实现。

     

    table布局适合展示二维数据。

     

    语义化标签应注意的一些其他问题:

  • 尽可能少地使用无语义标签div和span。
  • 在语义不明显,既可以用p也可以用div的地方,尽量用p,因为p默认情况下有上下间距,去样式后的可读性更好,对兼容特殊终端有利。
  • 不是用纯样式标签,例如b、font和u等,改用css设置。语义上需要强调的文本可以包含在strong或em标签里。
  • 对于文件过于分散和集中的问题并没有完美的解决方案,我们需要根据实际情况做些适当的折中。

     

    css rest:

  • 不推荐 * { margin:0; padding: 0 },推荐显示罗列出来。也不建议写成:{margin:0; padding:0; color:#000; font-size:12px;},因为这样会破坏css的继承性。
  • .fl { float: left; display: inline } 其中display: inline是为了解决IE6的双外边距Bug。
  • .zoom { zoom: 1 } 是IE的专有属性,为了触发IE的hasLayout。当zoom无效时,可以设置“position: relative”来触发hasLayout。
  • 补充:

         reset浏览器默认样式,推荐: https://github.com/necolas/normalize.css

     

    拆分模块:

  • 模块与模块之间尽量不要包含相同的部分,如果有相同的部分,应将它们提取出来,拆分成一个独立的模块。
  • 模块应在保证数量尽可能少的原则下,做到尽可能简单,以提高重用性。
  •  

    驼峰法用于区别单词,划线用于表明从属关系。例如:.timeList-lastItem。

    学习这种风格的命名:

    .fr { float: right; }

    .w25 { width: 25%; }

    多用组合,少用继承。

     

    当样式设置有冲突时,会采用权重高的样式。

    html标签的权重:1,class的权重:10,ID的权重:100.

    当权重相同时,会采用最近定义原则。

     

    为了保证样式容易被覆盖,提高可为维护性,css选择符的权重尽可能低。

     

    css的hack方式通常是 选择符前缀法 和 样式属性前缀法。

     

    标签的四种状态定义顺序,l( link )ov( visited )e h( hover )a( acitive )te,即love hate原则。

     

    块级元素和行内元素:

  • 块级元素可以设置width、height属性,行内元素设置width、height属性无效。
  • 块级元素可以设置margin和padding属性。行内元素设置margin和padding的水平方向,即-left和-right有效,垂直方向的-top和-bottom无效。
  • 通过修改display属性来切换块级元素和行内元素。
  •  

    hasLayout:

    是IE浏览器为解析盒模型而设计的一个专有属性,它的设计初衷是用于块级元素的,如果触发行内元素的hasLayout,就会让行内元素拥有一些块级元素的特性。

     

    display:inline-block

    行内的块级元素,它有块级元素的特点:可设置宽高、margin和padding值,也有行内元素的特点:不独占一行。

    会触发hasLayout。垂直方向的对齐,可设置形如 *vertical-align: -10px 来解决。

    为了实现E6、IE7和其他浏览器都兼容display: inline-block,也存在一定问题:

  • 它只能对行内元素实现 display: inline-block;不可以是块级元素。
  • *vertical-align是针对IE对hack,这也是不友好的,能不用hack就尽量不要使用hack。
  • 虽然IE6和IE7不支持CSS设置为display: inline-block,但事实上IE6和IE7的CSS解析引擎还是有display: inline-block的,比如说img标签和button标签都具有display: inline-block的特性,可以设置宽高但却不独占一行。

     

    float

    会改变正常的文档流排列,影响到周围元素。

    position: absolute 和 float: left或float: right 会隐式地改变display类型,不论之前是什么类型的元素(display: none除外),都会让元素以display: inline-block方式显示:可以设置宽高,默认宽带并不占满父元素。

     

    居中

  • 水平居中
    (1) 文本、图片等行内元素的水平居中:给父元素设置 text-align: center
    (2) 确定宽度的块级元素的水平居中:给元素设置 margin-left: auto 和 margin-right: auto
    (3) 不确定宽度的块级元素的水平居中:    
        I. 使用table包裹,并给table设置margin: 0 auto;       优点:做法巧妙。缺点:增加了无语义标签,加深了标签的嵌套层数    
        II. 使用display: inline/inline-block;       优点:简单明了,结构清晰。缺点:使用inline后变成了行内元素,缺少了某些特性,如:width, hieght…   
        III. 使用position: relative,给父元素设置float、position:relative和left:50%,子元素设置position:relative和left:-50%。      优点:结构清晰。缺点:position:relative会带来一些副作用。
  • 垂直居中
    (1) 父元素高度不确定的文本、图片、块级元素的垂直居中:给父容器设置相同的上下内边距实现。
    (2) 父元素高度确定的单行文本的垂直居中:line-height: 父元素高度。
    (3) 父元素高度确定的多行文本、图片、块级元素垂直居中:    
        I. 使用table包裹,缺点:添加了无语义标签,增加了嵌套层数。    
        II. 对支持 display: table-cell 的IE8 和 firefox 用 display: table-cell 和 vertical-align: middle 来实现居中,对不支持的IE6-7,使用特定格式的hack:给父子两层元素分别设置{ *position: absolute; *top: 50% }和{ *position: relative; *top: -50% }来实现居中。缺点:使用来hack不利于维护,设置position: relative; position: absolute; 带来一些副作用。
  •  

    网格布局

        无论sidebar和main在样式上谁左谁右,在html标签上要保证main的标签在sidebar之前被加载。

        只在最外层的容器给定具体宽度,所有其他容器的宽度均用百分比设置 ?? 网格布局。

     

    z-index

        z 轴在元素设置position为absolute或relative后被激活。

        设置负边距可以让相邻元素的位置产生重叠,谁浮在上面,取决于html标签出现的先后,后出现的标签浮于先出现的标签之上。

        IE6下的select遮挡问题,可使用同样大小的iframe遮住select。

     

    为避免组件的上下外边距重合问题和IE的hasLaout引发的Bug,各模块除特殊需求,一律采用margin-top设置上下外边距。

     

    Javascript

  • 使用匿名函数将脚本包起来,可以有效控制全局变量,避免冲突隐患。
  • 让JS不产生冲突,需要避免全局变量的泛滥,合理利用命名空间以及为代码添加必要的注视。
  • DOMReady比window.onload更适合来调用初始化函数。
  • 在页面的最后,即
  • 성명
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
    HTML 태그의 목적은 무엇입니까?HTML 태그의 목적은 무엇입니까?Apr 28, 2025 am 12:02 AM

    htmltagsareessentialforstructuringwebpages, 향상 액세스 가능성, SEO 및 성능

    자체 폐쇄 태그는 무엇입니까? 예를 들어보세요.자체 폐쇄 태그는 무엇입니까? 예를 들어보세요.Apr 27, 2025 am 12:04 AM

    Self-ClosingTagsinhtmlandxMlaretagsThatCloseThemselvess withoutseeparateClosingTag, 1) theareStement-well-formeddocuments.2) indugible-ustible butrr

    HTML 너머 : 웹 개발을위한 필수 기술HTML 너머 : 웹 개발을위한 필수 기술Apr 26, 2025 am 12:04 AM

    강력한 기능과 우수한 사용자 경험을 가진 웹 사이트를 구축하기 위해서는 HTML만으로는 충분하지 않습니다. 다음 기술도 필요합니다. JavaScript는 웹 페이지 동적 및 상호 작용을 제공하며 DOM을 운영하여 실시간 변경을 달성합니다. CSS는 미학 및 사용자 경험을 향상시키기 위해 웹 페이지의 스타일과 레이아웃을 담당합니다. React, Vue.js 및 Angular와 같은 현대 프레임 워크 및 라이브러리는 개발 효율성 및 코드 조직 구조를 향상시킵니다.

    HTML의 부울 속성은 무엇입니까? 몇 가지 예를 들어주십시오.HTML의 부울 속성은 무엇입니까? 몇 가지 예를 들어주십시오.Apr 25, 2025 am 12:01 AM

    부울 속성은 값없이 활성화되는 HTML의 특수 속성입니다. 1. 부울 속성은 입력 상자를 비활성화하는 등의 존재 여부에 따라 요소의 동작을 제어합니다. 2. 작업 원칙은 브라우저가 구문 분석 할 때 속성의 존재에 따라 요소 동작을 변경하는 것입니다. 3. 기본 사용법은 속성을 직접 추가하는 것이며, 고급 사용량은 JavaScript를 통해 동적으로 제어 될 수 있습니다. 4. 일반적인 실수는 값을 설정해야한다고 잘못 생각하고 올바른 글쓰기 방법은 간결해야합니다. 5. 모범 사례는 코드를 간결하게 유지하고 부울 속성을 합리적으로 사용하여 웹 페이지 성능 및 사용자 경험을 최적화하는 것입니다.

    HTML 코드를 어떻게 검증 할 수 있습니까?HTML 코드를 어떻게 검증 할 수 있습니까?Apr 24, 2025 am 12:04 AM

    HTML 코드는 온라인 유효성 검사기, 통합 도구 및 자동화 된 프로세스를 통해 깨끗할 수 있습니다. 1) w3cmarkupvalidationservice를 사용하여 온라인으로 HTML 코드를 확인하십시오. 2) 실시간 확인을 위해 VisualStudioCode에 HTMLHINT 확장을 설치하고 구성하십시오. 3) htmltidy를 사용하여 시공 프로세스에서 HTML 파일을 자동으로 확인하고 청소하십시오.

    HTML vs. CSS 및 JavaScript : 웹 기술 비교HTML vs. CSS 및 JavaScript : 웹 기술 비교Apr 23, 2025 am 12:05 AM

    HTML, CSS 및 JavaScript는 최신 웹 페이지를 구축하기위한 핵심 기술입니다. 1. HTML 웹 페이지 구조를 정의합니다. 2. CSS는 웹 페이지의 모양을 담당합니다.

    마크 업 언어로서의 HTML : 기능과 목적마크 업 언어로서의 HTML : 기능과 목적Apr 22, 2025 am 12:02 AM

    HTML의 기능은 웹 페이지의 구조와 내용을 정의하는 것이며, 그 목적은 정보를 표시하는 표준화 된 방법을 제공하는 것입니다. 1) HTML은 타이틀 및 단락과 같은 태그 및 속성을 통해 웹 페이지의 다양한 부분을 구성합니다. 2) 콘텐츠 및 성능 분리를 지원하고 유지 보수 효율성을 향상시킵니다. 3) HTML은 확장 가능하므로 사용자 정의 태그가 SEO를 향상시킬 수 있습니다.

    HTML, CSS 및 JavaScript의 미래 : 웹 개발 동향HTML, CSS 및 JavaScript의 미래 : 웹 개발 동향Apr 19, 2025 am 12:02 AM

    HTML의 미래 트렌드는 의미론 및 웹 구성 요소이며 CSS의 미래 트렌드는 CSS-In-JS 및 CSShoudini이며, JavaScript의 미래 트렌드는 WebAssembly 및 서버리스입니다. 1. HTML 시맨틱은 접근성과 SEO 효과를 향상시키고 웹 구성 요소는 개발 효율성을 향상 시키지만 브라우저 호환성에주의를 기울여야합니다. 2. CSS-in-JS는 스타일 관리 유연성을 향상 시키지만 파일 크기를 증가시킬 수 있습니다. CSShoudini는 CSS 렌더링의 직접 작동을 허용합니다. 3. Webosembly는 브라우저 애플리케이션 성능을 최적화하지만 가파른 학습 곡선을 가지고 있으며 서버리스는 개발을 단순화하지만 콜드 스타트 ​​문제의 최적화가 필요합니다.

    See all articles

    핫 AI 도구

    Undresser.AI Undress

    Undresser.AI Undress

    사실적인 누드 사진을 만들기 위한 AI 기반 앱

    AI Clothes Remover

    AI Clothes Remover

    사진에서 옷을 제거하는 온라인 AI 도구입니다.

    Undress AI Tool

    Undress AI Tool

    무료로 이미지를 벗다

    Clothoff.io

    Clothoff.io

    AI 옷 제거제

    Video Face Swap

    Video Face Swap

    완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

    뜨거운 도구

    mPDF

    mPDF

    mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

    WebStorm Mac 버전

    WebStorm Mac 버전

    유용한 JavaScript 개발 도구

    Eclipse용 SAP NetWeaver 서버 어댑터

    Eclipse용 SAP NetWeaver 서버 어댑터

    Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

    메모장++7.3.1

    메모장++7.3.1

    사용하기 쉬운 무료 코드 편집기

    VSCode Windows 64비트 다운로드

    VSCode Windows 64비트 다운로드

    Microsoft에서 출시한 강력한 무료 IDE 편집기