zoukankan      html  css  js  c++  java
  • 总结下html、css的一些东西

    目前流行的组件库有哪些?CSS,JS各有哪些流行的库?

    什么是组件?为什么要用组件库?

    组件是组成页面中最基本的元素,按钮,输入框,下拉选择都是组件,组件和组件组合就变成了一个更复杂的组件。至于为什么要用组件库我想应该是体验了,用户使用体验以及开发人员的开发体验,用户在页面上的交互都是通过组件,一个颜值高的组件可以第一眼吸引用户去点击,这就是用户体验,开发体验更不用说,组件就是同种类型不同交互的封装,是用组件库可以让我们更专注的针对业务的开发和产品的交互。

    什么是库,什么是框架

    库:库是有用功能的有组织的集合。库的典型功能包括处理字符串,日期,HTML DOM元素,事件,Cookie,动画,网络请求等。每个函数将值返回给调用应用程序,但是你从中可以选择参数来应用。库是更多是一个封装好的特定的集合,提供给开发者使用,的英文特定而且于某一方面的集合(方法和函数),库没有控制权,控制权在使用者手中,库在查询中需要的功能在自己的应用中使用,我们可以从封装的角度理解库。

    框架:框架顾名思义就是一套架构,会基于自身的特点向用户提供一套相当于叫完整的解决方案,而且控制权的在框架本身,使用者要找框架所规定的某种规范进行开发框架。是一个应用程序的骨架,它要求你以特定的方式处理软件设计,并在某些点插入自己的逻辑。通常框架提供事件。 存储和数据绑定等功能。

    从网页开发人员的角度:库可以很容易地被另一个库替换但框架不能 。

    目前主流的框架

    Vue、Angular、React三大主流

    流行的组件库或者说是UI框架

    Mint UI

    Mint UI是 饿了么团队开发基于vue.js的移动端UI框架,它包含丰富的 CSS 和 JS 组件,能够满足日常的移动端开发需要。

    WeUI

    WeUI 是一套同微信原生视觉体验一致的基础样式库,由微信官方设计团队为微信内网页和微信小程序量身设计,令用户的使用感知更加统一。包含button、cell、dialog、toast、article、icon等各式元素。

    ElementUI支持Vue、Angular、React

    Element是饿了么前端开源维护的Vue UI组件库,组件齐全,基本涵盖后台所需的所有组件,文档讲解详细,例子也很丰富。 主要用于开发PC端的页面,是一个质量比较高的Vue UI组件库。官网地址:element-cn.eleme.io/#/zh-CN

    vant UI

    vant UI是有赞前端团队基于有赞统一的规范实现的 Vue 组件库,提供了一整套 UI 基础组件和业务组件。通过 Vant,可以快速搭建出风格统一的页面,提升开发效率。

    Bootstrap

    简洁、直观、强悍的前端开发框架,让web开发更迅速、简单

    NG-ZORRO (angular)

    开箱即用的高质量 Angular 组件,与 Angular 保持同步升级。
    使用 TypeScript 构建,提供完整的类型定义文件。

    Amaze ~ 妹子 UI
    • Amaze UI 以移动优先(Mobile first)为理念,从小屏逐步扩展到大屏,最终实现所有屏幕适配,适应移动互联潮流。
    • Amaze UI 含近 20 个 CSS 组件、20 余 JS 组件,更有多个包含不同主题的 Web 组件,可快速构建界面出色、体验优秀的跨屏页面,大幅提升开发效率。
    • 相比国外框架,Amaze UI 关注中文排版,根据用户代理调整字体,实现更好的中文排版效果;兼顾国内主流浏览器及 App 内置浏览器兼容支持。
    • Amaze UI 面向 HTML5 开发,使用 CSS3 来做动画交互,平滑、高效,更适合移动设备,让 Web 应用更快速载入。
    Layui

    layer是一款口碑极佳的web弹层组件,是一款采用自身模块规范编写的前端 UI 框架,遵循原生 HTML/CSS/JS 的书写与组织形式,门槛极低,拿来即用。layui 首个版本发布于2016年秋,她区别于那些基于 MVVM 底层的 UI 框架,从核心代码到 API 的每一处细节都经过精心雕琢,非常适合界面的快速开发。

    Ant Design

    Ant Design 是基于 React 开发的,并不是传统的 html。React 起源于 Facebook 的内部项目,现在已经成了一个很流行的开发工具。

    请描述 BFC(Block Formatting Context) 及其如何工作

    块格式化上下文(Block Formatting Context,BFC) 是Web页面的可视化CSS渲染的一部分,是块盒子的布局过程发生的区域,也是浮动元素与其他元素交互的区域。

    W3C的定义

    浮动元素和绝对定位元素,非块级盒子的块级容器(例如 inline-blocks, table-cells, 和 table-captions),以及overflow值不为“visiable”的块级盒子,都会为他们的内容创建新的块级格式化上下文。

    在一个块级格式化上下文里,盒子从包含块的顶端开始垂直地一个接一个地排列,两个盒子之间的垂直的间隙是由他们的margin 值所决定的。两个相邻的块级盒子的垂直外边距会发生叠加。

    在块级格式化上下文中,每一个盒子的左外边缘(margin-left)会触碰到容器的左边缘(border-left)(对于从右到左的格式来说,则触碰到右边缘),即使存在浮动也是如此,除非这个盒子创建一个新的块级格式化上下文。

    BFC特性:
    • 内部的Box会在垂直方向,从顶部开始一个接一个地放置。
    • Box垂直方向的距离由margin决定。属于同一个BFC的两个相邻Box的margin会发生叠加
    • 每个元素的margin box的左边, 与包含块border box的左边相接触(对于从左往右的格式化,否则相反)。即使存在浮动也是如此。
    • BFC的区域不会与float box叠加。
    • BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素,反之亦然。
    • 计算BFC的高度时,浮动元素也参与计算。
    下列方式会创建块格式化上下文:
    • 根元素()
    • 浮动元素(元素的 float 不是 none)
    • 绝对定位元素(元素的 position 为 absolute 或 fixed)
    • 行内块元素(元素的 display 为 inline-block)
    • 表格单元格(元素的 display为 table-cell,HTML表格单元格默认为该值)
    • 表格标题(元素的 display 为 table-caption,HTML表格标题默认为该值)
    • 匿名表格单元格元素(元素的 display为 table、table-row、 table-row-group、table-header-group、table-footer-group(分别是HTML table、row、tbody、thead、tfoot的默认属性)或 inline-table)
    • overflow 值不为 visible 的块元素
    • display 值为 flow-root 的元素
    • contain 值为 layout、content或 paint 的元素
    • 弹性元素(display为 flex 或 inline-flex元素的直接子元素)
    • 网格元素(display为 grid 或 inline-grid 元素的直接子元素)
    • 多列容器(元素的 column-count 或 column-width 不为 auto,包括 column-count 为 1)
    • column-span 为 all 的元素始终会创建一个新的BFC,即使该元素没有包裹在一个多列容器中(标准变更,Chrome bug)。
    • 块格式化上下文包含创建它的元素内部的所有内容.

    块格式化上下文对浮动定位(参见 float)与清除浮动(参见 clear)都很重要。浮动定位和清除浮动时只会应用于同一个BFC内的元素。浮动不会影响其它BFC中元素的布局,而清除浮动只能清除同一BFC中在它前面的元素的浮动。外边距折叠(Margin collapsing)也只会发生在属于同一BFC的块级元素之间。

    使用display: flow-root
    一个新的 display 属性的值,它可以创建无副作用的BFC。在父级块中使用 display: flow-root 可以创建新的BFC。

    谈谈以前端角度出发做好SEO需要考虑什么?

    1. 维护网站,提高内容质量,保持更新

    搜索引擎会考评网站的质量,保持网站的经常更新,使网站拥有大量的、有用的、可读性强的优质信息。网站的权重会相应的提升。

    2. 网站结构布局优化:尽量简单、开门见山,提倡扁平化结构。

    建立的网站结构层次越少,越容易被“蜘蛛”抓取,也就容易被收录。

    3. 控制首页链接数量

    网站首页是权重最高的地方,如果首页链接太少,没有“桥”,“蜘蛛”不能继续往下爬到内页,直接影响网站收录数量。但是首页链接也不能太多,一旦太多,没有实质性的链接,很容易影响用户体验,也会降低网站首页的权重,收录效果也不好。注意链接要建立在用户的良好体验和引导用户获取信息的基础之上。

    4. 导航优化

    导航应该尽量采用文字方式,也可以搭配图片导航,但是图片代码一定要进行优化,img标签必须添加“alt”和“title”属性,告诉搜索引擎导航的定位,做到即使图片未能正常显示时,用户也能看到提示文字。其次,在每一个网页上应该加上面包屑导航,好处:从用户体验方面来说,可以让用户了解当前所处的位置以及当前页面在整个网站中的位置,帮助用户很快了解网站组织形式,从而形成更好的位置感,同时提供了返回各个页面的接口,方便用户操作;对“蜘蛛”而言,能够清楚的了解网站结构,同时还增加了大量的内部链接,方便抓取,降低跳出率。

    5. 减少http请求,提高网站的加载速度。

    当速度很慢时,用户体验不好,留不住访客,并且一旦超时,“蜘蛛”也会离开

    6.适量的关键词和网页描述
    • 关键词不宜太多也不宜太少,列举出几个页面的重要关键字即可,切记过分堆砌
    • title标题:只强调重点即可,尽量把重要的关键词放在前面,关键词不要重复出现,尽量做到每个页面的title标题中不要设置相同的内容。
    • meta keywords标签:关键词,列举出几个页面的重要关键字即可,切记过分堆砌。
    • meta description标签:网页描述,需要高度概括网页内容,切记不能太长,过分堆砌关键词,每个页面也要有所不同。
    • body中的标签:尽量让代码语义化,在适当的位置使用适当的标签,用正确的标签做正确的事。
    • a标签:页内链接,要加 “title” 属性加以说明,让访客和 “蜘蛛” 知道。而外部链接,链接到其他网站的,则需要加上 el=“nofollow” 属性, 告诉 “蜘蛛” 不要爬,因为一旦“蜘蛛”爬了外部链接之后,就不会再回来了。
    • img应使用 “alt” 属性加以说明。为图片加上alt属性,当网络速度很慢,或者图片地址失效的时候,就可以体现出alt属性的作用,他可以让用户在图片没有显示的时候知道这个图片的作用。
    • strong、em标签 : 需要强调时使用。strong标签在搜索引擎中能够得到高度的重视,它能突出关键词,表现重要的内容,em标签强调效果仅次于strong标签。
    • 巧妙利用CSS布局,将重要内容的HTML代码放在最前面,最前面的内容被认为是最重要的,优先让“蜘蛛”读取,进行内容关键词抓取。搜索引擎抓取HTML内容是从上到下,利用这一特点,可以让主要代码优先读取,广告等不重要代码放在下边。
    • 谨慎使用 display:none :对于不想显示的文字内容,应当设置z-index或设置到浏览器显示器之外。因为搜索引擎会过滤掉display:none其中的内容。
    • 保留文字效果如果需要兼顾用户体验和SEO效果,在必须用图片的地方,例如个性字体的标题,我们可以利用样式控制,让文本文字不会出现在浏览器上,但在网页代码中是有该标题的。例如这里的“电视剧分类”,为了完美还原设计图,前端工程师可以把文字做成背景图,之后用样式让html中的文字的缩进设置成足够大的负数,偏离出浏览器之外,也可以利用设置行高的方法让文字隐藏。
    • 利用CSS截取字符如果文字长度过长,可以用样式截取,设置高度,超出的部分隐藏即可。这样做的好处是让文字完整呈现给搜索引擎,同时在表现上也保证了美观。

    CSS被忽略的content属性

    CSS的 content 属性,大家应该都不陌生,很多时候我们都使用过,一般情况下你看到最多的用法无外乎这样两种:一种用于清除浮动,一种用于我们经常使用的字体图标。
    .clear:after {
      content: "";
      display: block;
      clear: both;
    }
    
    .icon:before {
      content: "e778";
    }
    
    它的更多用法:

    CSS 的 content 属性用于在元素的::before::after伪元素中插入内容。使用content属性插入的内容都是匿名的可替换元素。

    从上面看到它只能用于「伪元素」中,但其实它在 chrome 浏览器中,可用于任何元素.不过除了chrome浏览器,其它浏览器并不支持直接在元素上使用,只能用在「伪元素」上。所以使用场景并不多。

    属性值
    • string
      指定的文本值。字符串是最常见的用法,比如上面说的字体图标。不过你还可以做的更多。
      image
    <template>
    <div>
      <form class="form">
        <label>用户名</label><input type="text" />
        <label>手机号</label><input type="text" />
        <label>邮箱</label><input type="text" />
      </form>
    </div>
    </template>
    <style>
    .form label:before {
      content: "*";
      color: red;
    }
    </style>
    
    

    Q:是不是发现了新大陆?

    A:是

    Q:登哥,你是如何看待别人都说你很帅的?

    A:我这该死的,无处安放的魅力

    <template>
      <p class="question">是不是发现了新大陆?</p>
      <p class="answer">是</p>
      <p class="question">登哥,你是如何看待别人都说你很帅的?</p>
      <p class="answer">我这该死的,无处安放的魅力</p>
    </template>
    <style>
    .question:before {
      content: "Q:";
    }
    .answer:before {
      content: "A:";
    }
    </style>
    

    image

    • url
      值可以为:图像,声音,视频等内容。

    通常你想在网页中显示一张图片,一般是两种方式:使用或者使用 background-image。

    除此之外,你还可以利用 content 属性,它的值可以是图片的地址

    不过以这种方式插入时无法更改图像的尺寸。所以我们很少这么使用

    • attr

    可以用它获取 HTML 属性的值。

    年龄:18

    <template>
      <label class="label" data-label="年龄">18</label>
    </template>
    <style>
    .label:before {
      content: attr(data-label) ": ";
    }
    </style>
    
    • counter(计数器)

    通常你要实现一个动态的递增数,都是通过 JavaScript 实现,你可能都没有想过 CSS 也是可以实现递增数。

    本质上 CSS 计数器是由 CSS 维护的变量,这些变量可能根据 CSS 规则增加以跟踪使用次数。
    计数器的值通过使用 counter-reset 和 counter-increment 操作,然后通过 counter() 或 counters()函数来显示在页面上。

    如何使用它:

    首先,使用前必须要通过 counter-reset 重置一个初始值。它默认是 0。你也可以指定初始值

    counter-reset: record; /* 重置计数器为 0 */
    counter-reset: record 2; /* 重置计数器为 2 */
    

    除此之外,它的值还可以是多个。

    <template>
      <h3></h3>
    </template>
    <style>
    h3 {
      counter-reset: first 2 second 4;
    }
    h3:before {
      content: counter(first) counter(second);
    }
    </style>
    

    counter() 函数可以接受两个参数。

      counter(name, list-style-type)
    

    list-style-type 的值可以为:disc | circle | square | decimal | decimal-leading-zero | lower-roman | upper-roman | lower-greek | lower-latin | upper-latin | armenian | georgian | none | inherit

    除了 counter() 之外还有一个 counters(),那它是做什么的呢?

    counters() 对嵌套的计数器非常有用,它可以在不同级别的嵌套计数器之间插入字符串。

    什么是微格式?在前端构建中应该考虑微格式吗?

    microformat微格式定义

    建立在已有的、被广泛采用的标准基础之上的一组简单的、开放的数据格式(microformats.org官方定义)。是把语义嵌入到HTML以便有助于分离式开发而制定的一些简单约定,是兼顾人机可读性设计的数据表达方式,对Web网页进行语义注解的方法。

    微格式在实际应用中的意义和作用又是什么呢?

    微格式按照某种已有的被广泛应用的标准,通过对内容块的语义标记,可以让外部应用程序、聚合程序和搜索引擎能够做以下事情:

    1、在捉取Web内容时,能够更为准确地识别内容块的语义;

    2、对内容进行操作,包括提供访问、校对,还可以将其转化成其他的相关格式,提供给外部程序和Web服务使用。

    我们从上面的描述知道,微格式实际就是为现有的(X)HTML元素添加元数据和其他属性,增强语义。

    不同种类的微格式

    • XFN 用于描述社交关系
    • hCalendar 用于描述事件
    • hCard 描述联系信息
    • hNews 描述新闻内容
    • hProduct 描述商品
    • XOXO 描述列表和大纲
    微格式应用举例

    1、
    例如 一个地理坐标:46.32,-12.33,普通人无法理解这些数字的含义,现在把它做成微格式:

    <span class="geo">
    <span class ="latitude">52.48</span>
    <span class="longtitude">-1.89</span>
    

    这样机器就可以正确地理解这些字符的含义,并对其进行索引并在地图上发现相应位置,导出到GPS设备,或者用于其他的用途。

    2、

    当我用手机浏览某公司的网站时,手机浏览器识别出了网页中的 hCard 信息。这个 hCard 标记了该公司的多种联络方式,手机浏览器很聪明地提示我“是否保存到通讯录”,于是我很经松地保存了我所需要的信息。

    HTML5的离线储存怎么使用?

    HTML5新功能离线存储

    离线存储可以将站点的一些文件存储在本地,在没有网络的时候还是可以访问到以缓存的对应的站点页面,其中这些文件可以包括html,js,css,img等等文件,即使在有网络的时候,浏览器也会优先使用已离线存储的文件,返回一个200(fromcache)头。这跟HTTP的缓存使用策略是不同的。

    做好相应资源的缓存可以带来更好的用户体验,当用户使用自己的流量上网时,本地缓存不仅可以提高用户访问速度,而且大大节约用户的使用流量。

    原理:

    HTML5的离线存储是基于一个新建的.manifest文件的缓存机制(不是存储技术),通过这个文件上的解析清单离线存储资源,
    这些资源就会像cookie一样被存储了下来。之后当网络在处于离线状态下时,浏览器会通过被离线存储的数据进行页面展示。

    什么是manifest文件

    Manifest是一个简单的文本文件,它的扩展名是任意的,定义需要缓存的文件、资源,当第一次打开时,浏览器会自动缓存相应的资源。

    Manifest 的特点:
    • 离线浏览:即当网络断开时,可以继续访问你的页面。
    • 访问速度快:将文件缓存到本地,不需每次都从网络上请求。
    • 稳定性:做了Manifest缓存,遇到突发网络故障或者服务器故障,继续访问本地缓存
    如何使用离线存储
    • 页面头部像下面一样加入一个manifest的属性。
    • 在cache.manifest文件的编写离线存储的资源。

    离线存储的manifest一般由三个部分组成:

    • CACHE:必选,表示需要离线存储的资源列表,由于包含manifest文件的页面将被自动离线存储,所以不需要把页面自身也列出来。
    • NETWORK:可选,可以使用通配符,表示在它下面列出来的资源只有在在线的情况下才能访问,他们不会被离线存储,所以在离线情况下无法使用这些资源。不过,如果在CACHE和NETWORK中有一个相同的资源,那么这个资源还是会被离线存储,也就是说CACHE的优先级更高。
    • FALLBACK:可选,表示如果访问第一个资源失败,那么就使用第二个资源来替换他
    如何更新缓存?
    • 更新manifest文件
      • 给manifest添加或删除文件。
      • 若manifest没有添加或删除文件,只是修改了文件,可以通过更改版本号等更新manifest文件。 
    • 通过javascript操作html5中引入了js操作离线缓存的方法:window.applicationCache.update(),可以手动更新缓存。
    • 清除浏览器缓存如果用户清除了浏览器缓存(手动或用其他一些工具),都会重新下载文件
    h5还有哪些存储方式?
    • localStorage没有时间限制的数据存储(永久),对于同一个浏览,当用户关闭浏览器窗口后,数据不会被删除。
    • sessionStorage针对一个session的数据存储(sesion/),当用户关闭浏览器窗口后,数据会被删除。
    • cookie:不适合大量数据的存储,因为它们由每个对服务器的请求来传递,这使得 cookie 速度很慢而且效率也不高
    离线存储有什么优缺点?

    优点:

    • 离线浏览,用户可在应用离线时使用它们
    • 速度,已缓存资源加载得更快
    • 减少服务器负载,浏览器将只从服务器下载更新过或更改过的资源。

    缺点:

    • 更新的资源,需要二次刷新才会被页面采用
    • 不支持增量更新,只有manifest发生变化,所有资源全部重新下载一次
    • 缺乏足够容错机制,当清单中任意资源文件出现加载异常,都会导致整个manifest策略运行异常

    渐进增强 VS 优雅降级

    渐进增强(Progressive Enhancement):一开始就针对低版本浏览器进行构建页面,完成基本的功能,然后再针对高级浏览器进行效果、交互、追加功能达到更好的体验。

    写法

    .transition{
      -webkit-transition: all .5s;
         -moz-transition: all .5s;
           -o-transition: all .5s;
              transition: all .5s;  
    }
    

    优雅降级(Graceful Degradation):一开始就构建站点的完整功能,然后针对浏览器测试和修复。比如一开始使用 CSS3 的特性构建了一个应用,然后逐步针对各大浏览器进行 hack 使其可以在低版本浏览器上正常浏览。

    写法

    .transition{ 
           transition: all .5s;
        -o-transition: all .5s;
       -moz-transition: all .5s;
     -webkit-transition: all .5s;
    }
    
    渐进增强相当于向上兼容,而优雅降级相当于向下兼容。
    如何抉择

    根据你的用户所使用的客户端的版本来做决定

    现在有很成熟的技术,能够让你分析使用你客户端程序的版本比例。如果低版本用户居多,当然优先采用渐进增强的开发流程;如果高版本用户居多,为了提高大多数用户的使用体验,那当然优先采用优雅降级的开发流程。

    Quirks模式是什么?它和Standards模式有什么区别?

    浏览器的排版引擎有三种模式

    Quirks怪异模式、标准模式(Standards mode)和接近标准模式(Almost standards mode)

    浏览器如何决定用哪个模式?

    对HTML文件来说,<!DOCTYP>声明位于<html>标签之前,这个<!DOCTYP>可以告知浏览器使用哪种 HTML 规范

    • <!DOCTYPE html>

    当 doctype 信息如上时,表明该页面是遵守了 HTML5 规范的,浏览器会选择 Standards Mode,这种 doctype 是最推荐的一种,我们平时设计页面都应该加上这一个 doctype。

    • <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

    当 doctype 如上时,浏览器同样会选择 Standards Mode,虽然和第一种 doctype 有一些区别,但是几乎可以认为是一样的。

    • <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

    当 doctype 如上时,浏览器会选择 Almost Standards Mode,需要注意的是如果今后需要把这个页面改为 HTML5 规范,那么<table>中的分割图片问题可能会错乱。

    • 当 doctype 缺失的时候或者声明不正确的时候

    浏览器会选择 Quirks Mode,这是非常不推荐的方式,我们应该尽量避免 Quirks Mode,这对一个 web 应用是非常不利的地方

    标准模式下的页面与怪异模式下的页面区别

    盒模型

    盒模型是浏览器 Quirks Mode 和 Standards Mode 的主要区别。

    在 IE 盒模型中,

    • 盒子宽= 内容宽+左右内边距+左右边框
    • 盒子高= 内容高+上下内边距+上下边框
    内联元素的尺寸

    CSS 中常见的元素有两类,分别是 block(块级)元素及 inline(内联)元素。根据 CSS 标准,对于 inline 元素,又可以分为 replaced 和 non-replaced 两类。

    什么是replaced inline元素?什么是non-replaced inline元素?

    默认具有 CSS 格式化外表范围的元素,比如 img 标签,有自己的宽和高,我们称其为 replaced 元素,还有 input,textarea,select,object,等都是 replaced 元素。除了这些元素之外的元素就是 non-replaced 元素。如 span 标签。

    在 IE Standards Mode 下,non-replaced inline 元素无法自定义大小,而在 IE Quirks Mode 下,可以自定义大小,改变该元素显示的尺寸。

    margin: 0 auto设置水平居中

    标准模式下会生效,而在怪异模式下不会生效

    经常遇到的浏览器的兼容性有哪些?原因,解决方法是什么,常用hack的技巧 ?

    1. IE6不支持png-24透明图片

    问题出现的浏览器:IE6及其更低的版本

    问题描述:在IE6浏览器上,使用png24为的图片不透明,出现背景。

    解决方法:图片使用gif格式,或者png-8格式图片。

    2.3像素问题,问题出现的浏览器:IE6及其更低的版本

    问题描述:两个相邻的div之间有3个像素的空隙,一个div使用了float,而另一个没有使用产生的。

    解决方法:对另一个div也使用float;

    给浮动的div添加属性margin-right:-3px,但是这样写,在其他浏览器又会不正常,所以我们需要添加IE6的hack,在属性margin-right前添加下划线 _margin-right:-3px.(IE6以及更低版本的hack,是在属性前面添加下划线 _ )

    3. 浏览器默认的margin和padding不同,

    解决方案加CSS样式重置

    4. IE5-IE8不支持opacity

    解决方法:这时可以另外添加ie滤镜alpha,如下:

    Opacity:0.8;
    
    Filter:alpha(opacity=80);
    
    -ms-filter:”progid:DXImageTransform.Microsoft.Alpha(opacity=80)”;
    
    5. IE6不能定义1px左右宽度的容器

    问题描述:创建一个高度为1px的容器,在IE6中没效果。

    解决方法:因为行高line-height在IE6下有默认值,设置 line-height:1px|overflow:hidden|zoom:0.08.

    6. IE6不支持min-*:,问题出现的浏览器:IE6及其更低的版本

    问题描述:IE6不支持min-height属性。即使定义了元素高度,如果内容超过元素的高度,IE6在解析时,会自动延长元素的高度。

    解决方法:利用IE6不识别!Important,给元素设置固定高度,并且设置元素高度自动。

    Height: auto !important;
    
    Height: 300px;
    
    Min_height: 300px;
    

    因为IE6不识别!Important,它只识别到了height:300px,当内容超过300px时,它会自动延长高度。IE7以及其他浏览器都识别!Important,虽然定义了Height:300px,但是!Important的优先级别最高。所以内容超过300px时,还是会自动延长。

    7. 双外边距浮动问题:IE6及其更低的版本。

    问题描述:块属性标签float后,又有横行的margin情况下,在IE 6显示margin 比设置的大。

    任何浮动的元素上的外边距加倍,例如:如果元素设置的外边距为maigin-left:15px, 在浏览器里会显示为margin-left:30px.

    解决办法:将元素的display属性设置为inline,因为元素是浮动的,所以这么设置

    不会影响元素在浏览器的显示。块级元素就加display:inline;行内元素转块级元素display:inline后面再加display:table。

    8. Firefox点击链接出现的虚线框:Firfox浏览器

    问题描述:Firefox浏览器在点击链接时,会自动在元素周围添加一个虚线边框。

    解决方法:我们为了和其他浏览器保持一致,需要去掉虚线框,我们可以给a标签设 置outline属性,如下:

    a{outline:none;}
    
    a:focus{outline:none;}
    
  • 相关阅读:
    $on , $emit , $broadcast , $apply
    angularJS 从后台获取所有分类,并默认选中值(select)
    angularJS 发送get、post请求
    微信小程序点击不同的按钮,展示不同的信息内容
    小程序---模板的引用与使用
    项目最全的小程序源码网址
    小程序多个商品数量之间的增减与总价
    leetcode——两数之和(暴力,一遍hash,两遍hash,双指针)
    java在线程和内部类中的使用final关键字
    java线程——多线程访问成员变量与局部变量
  • 原文地址:https://www.cnblogs.com/housheng/p/12109694.html
Copyright © 2011-2022 走看看