当前位置: 首页 > 编程日记 > 正文

用Javascript修正12个常见的浏览器问题

我们提倡尽可能使用CSS,而且我们常常能做到这一点。现代浏览器有很好的CSS支持-这无疑足够好让你使用CSS来控制布局和版面设计。但是有时候,某些网页元素在不同的浏览器会出现不同。

如果你不知道原因,不要过于担心,请研究CSS规则并查看这篇文章:使用CSS来修正一切: 20 +常见错误和修复。

如果这些也无效,您可以通过下面列出的12个javascript解决方案修复它,这样您的网页看起来就能跨越所有浏览器了!

在本文中,我们会揭开你在开发web应用是可能会遇到的12个最常见CSS问题的javascript解决方案。

1. 自动匹配高度

jQuery Plugins


自从我们抛弃了基于Table的页面布局后,创建同等高度栏目或内容盒子的视觉效果已然是一个挑战。

1.1 用jQuery设置匹配高度

这个jQuery插件在同一个容器里“平衡”盒子的高度并创造一个简介的网格——几乎从可用性和性能的角度使用简单的JavaScript替代: equalHeights()函数测定一个容器里的所有同级元素同容器的高度,然后设置每个元素的最低高度为最高的元素的高度。

如何工作

equalHeights()通过循环测定指定元素的最高级别的子节点,然后设置他们的最小高度值为最高的元素的高度。

  • Demohere.
1.2 用jQuery匹配栏目高度

jQuery的另一个可以使盒子的高度相等的插件

  1. $(“#col1, #col2″).equalizeCols();

将如你所想的那样匹配高度

  1. $(“#col1, #col2″).equalizeCols(“p,p”);
匹配这两卷,并在#col1或#col2(短的那个)里的P标签后面添加空白.

2. IE6 PNG透明支持

IE6以下的版本不支持png透明。使用hack,IE 5.5和6也已经可以支持,但hack并不理想的且难以使用。让我们来看看我们能做些什么来支持IE6用户 ,同时为网站的大多数访客带来最佳的透明效果。

2.1 强制IE6支持透明

IE7的是一个Dean Edwards建立的JavaScript库,以强迫MSIE(IE6,IE5)表现的像一个兼容标准的浏览器。它修复许多CSS问题并使透明PNG在IE6和IE5下正常工作,它还允许高级的CSS选择器。

  • Demohere.
  • 下载源文件here
2.2. 改良iFixPng

png fix


修正IE6及以下的PNG图片的问题,IMG标签和CSS背景图片都可以。这个插件是对原始iFixPng插件的一种改进。特点包括:图像或有背景图片的标签,现在支持background-position,其中包括IE浏览器的绝对定位的修正。(bottom: -1px || bottom: 0px)

  • Demohere.
  • 下载源文件here

3. 用Javascript改变class

javascript to fix css issues


这是一个方便的JavaScript函数,可以在当前的文件的任何元素的class由oldClass改为newClass。这是特别有用的快速的利用CSS而不是用编码改变风格。

  1. function changeClass(oldClass, newClass) {
  2. var elements = document.getElementsByTagName(“*”);
  3. for( i = 0; i < elements.length; i++ ) {
  4. if( elements[i].className == oldClass ) elements[i].className = newClass;
  5. }
  6. }
  • Demohere.
  • 下载源文件here

4. CSS浏览器选择器

如果您可以只需键入一个特殊选择器,在这里您可以写一些JavaScript ,设置一个Class在基于当前的浏览器的名字的标签会怎么样?

javascript to fix css issues


4.1 CSS Browser

这是一个非常小的javascript只有一行,而且不到1kb,它允许CSS选择器。它让您可以为每个操作系统和每个浏览器写具体的CSS代码。你可以写一些JavaScript ,设置Class的名字,也就是说,内容根据当前的浏览器。

  • Demohere.
  • 下载源文件here
jQuery 浏览器选择器

这里有另外一个基于jQuery的非常简单的处理浏览器选择器的方法,你需要做的只是加载jQuery库文件,并添加下面的一块儿代码。

  1. $(document).ready(function(){
  2. $(‘html’).addClass($.browser);
  3. });

现在你可以准备你的样式,如.msie,.mozilla, .opera, .safari 或其它目标浏览器。

  • Demohere.

5. 最小/最大 高度/宽度支持

针对CSS min-width, min-height, max-width, max-height, border-*-width, margin, 和padding 属性,这里有一些很好的jQuery修正。

5.1 jQMinMax

这是一个为没有原声的支持min-width, max-width,min-height和max-height的地方添加支持的jQuery插件。

  • Demohere.
  • 下载源文件here
5.2 JSizes

这个小jQuery插件为CSS min-width, min-height, max-width, max-height, border-*-width, margin, 和padding 属性添加支持。特别是他提供一种方法来确定一个元素在那里可见。由于所有的型号的方法返回数值,所以这些也可以安全的使用在严格的DOM元素方面

  1. jQuery(function($) {
  2. var myDiv = $(‘#myDiv’);
  3. // set margin-top to 100px and margin-bottom to 10em
  4. myDiv.margin({top: 100, bottom: ‘10em’});
  5. // displays the size of the top border in pixels
  6. alert(myDiv.border().top);
  7. // displays true if the element is visible, false otherwise
  8. alert(myDiv.isVisible());
  9. // set padding-right to 10px and margin-left to 15px using chaining
  10. myDiv.padding({right: 10}).margin({left: 15});
  11. });
  • Demohere.
  • 下载源文件here

6. 元素垂直/水平居中

你可能之前遇到过这个问题:水平或垂直居中某个元素。垂直居中在CSS里面相当麻烦,特别是你想支持所有主流浏览器。

Center Elements Vertically and Horizontally


6.1 Center element plugin

这个插件可以使页面中的所有元素居中,垂直和水平居中采用css负margin的方法。

  1. $(“element”).center(); //vertical and horizontal
  2. $(“element”).center({
  3. horizontal: false // only vertical
  4. });
  • Demohere.
  • 下载源文件here
6.2 我是怎么把一个元素垂直居中的?

在这个视频教程里, Jeffrey Jordan Way将为你展示如何使用jQuery的力量结合CSS在你的浏览器里面使一个图片垂直居中.

7. 在IE里使用Q标签

人们期望使用的Q标签而不是blockquote标签来显示引号。然而IE/Win不支持Q标签,因为这一点,大部分网站的作者选择不使用Q标签。

7.1 QinIE

当你在你的文件的头部添加这个脚本在IE浏览器里自动扫描的网页Q的标记,并正确的显示它们(包括嵌套引用) 。当(如果)IE浏览器将来支持Q标签,这个插件将会添加浏览器版本检查。

  • 下载源文件here

8. 增加点击目标的大小和获得更多的响应转换

jQuery Plugins


通过把你的所有内容放到一个可点击的标签来和单调的“read more…”链接说拜拜吧。

  • 下载源文件here

9. Lazy loader

Lazy loader 是一个jQuery。它可以延迟加载页面里面的图片. 在用户浏览视界(页面中可见部分)以外的图片之前,它将不会被加载。这和image preloading的作用正好相反.

  • Demohere.
  • 下载源文件here

10. bgiframe

轻松的解决IE下的z-index的问题。

IE z-index


  • Demohere.
  • 下载源文件here

11. ieFixButtons

ieFixButtons 是一个修正IE6和7的<button>标签的bug的jquery插件。

  • Demo here.
  • 下载源文件here

12. 溢出(overflow)修正

修正ie下的水平溢出。IE在溢出的元素里面显示一个滚动条,特别是如果元素里面只有一行,滚动条就会遮住这行内容。这个插件通过修改padding来修正这个问题。

IE z-index


  • Demo here.
  • 下载源文件here

本文翻译自:http://www.noupe.com/css/using-javascript-to-fix-12-common-browser-headaches.html
转载请注明来源,谢谢。

转载于:https://www.cnblogs.com/CB/archive/2009/01/10/1373442.html

相关文章:

读书笔记之知识杂点

1.xx1,x1,x,哪个效率最高?为什么? xx1最低&#xff0c;因为它的执行过程如下&#xff1a; &#xff08;1&#xff09;读取右x的地址 &#xff08;2&#xff09;x1 &#xff08;3&#xff09;读取左x的地址 &#xff08;4&#xff09;将右值传给左边的x(编译器并不认为左右的x…

Codeforces.487C.Prefix Product Sequence(构造)

题目链接 \(Description\) 对于一个序列\(a_i\)&#xff0c;定义其前缀积序列为\(a_1\ \mathbb{mod}\ n,\ (a_1a_2)\ \mathbb{mod}\ n,...,(a_1a_2...a_n)\ \mathbb{mod}\ n\)。 给定\(n\)&#xff0c;求一个\(n\)的排列&#xff0c;使得该排列的前缀积序列是\([0,1,2,...,n-1]…

读取CSV文件内容,将其转换成JSON字符串输出

CsvToJsonUtil 工具类作用&#xff1a;读取CSV文件内容&#xff0c;将其转换成JSON字符串输出 转换工具类代码如下&#xff1a; package com.test.util;import java.io.*; import java.io.IOException;public class CsvToJsonUtil {/*** 根据文件路径读取CSV文件 返回String字…

component-scan和annotation-driven

<context:component-scan/>该xml配置作用是启动Spring的组件扫描功能&#xff0c;自动扫描base-package指定的包及其子文件下的java文件&#xff0c;如果扫描到有controller、Service、Repository、Component等注解的java类&#xff0c;就会将这些类注册为bean。指定的包…

“不亦乐乎”是“乐”还是“悦”?

看了六七年的《咬文嚼字》&#xff0c;在2009年的第一期第一次对其内容产生了巨大的质疑。这是《咬文嚼字》2009年第一期特稿&#xff1a;“《2008年十大语文差错》”&#xff0c;里面公布了《咬文嚼字》编辑部总结的2008年度十大语文差错&#xff1a;  一、“有朋自远方来&a…

mysql 数据操作 单表查询 where约束 between and or

WHERE约束 where字句中可以使用&#xff1a; 比较运算符&#xff1a;>< > < !between 80 and 100 值在80到100之间 >80 <100in(80,90,100) 值是80或90或100 满足这个条件就可以like egon%pattern可以是%或_&#xff0c;%表示任意多字符_表示一个字符…

查看计算机连接的WIFI密码

方法1&#xff1a;通过cmd命令获取 使用WinR组合键&#xff0c;打开命令提示符窗口&#xff0c;输入以下命令&#xff1a; netsh wlan show profiles WIFI名称 keyclear 或者 netsh wlan show profiles name"WIFI名称" keyclear 在输出的内容中&#xff0c;安全…

[VBScript] 自动删除2小时以前生成的文件

保存为deleteTempFiles.vbs&#xff0c;双击即可运行 dim folder, file, mFSO, subfolderSet mFSO CreateObject("Scripting.FileSystemObject") set foldermFSO.GetFolder("C:\Users\msautotestuser\AppData\Local\Temp") Delete files dim df For Each …

超市购物打印小票的简单程序 记录下来

做了2个版本的超市购物小票打印程序&#xff0c;做过记录一、C/S样图如下&#xff1a;其中 输入商品的编码 回车 将会调用该商品的信息&#xff0c;显示在下面的DataGridView中 ,DataGridView中数量是可以修改的&#xff0c;修改数量&#xff0c;下面的合计 将会自动计算 &…

Asp.net控件开发学习笔记(三)-控件开发基础

封装 在asp.net中&#xff0c;控件被分为两类.用户控件和自定义服务器控件。前者就是我们经常用来将一些可复用的内容封装成的.ascx文件。这里主要研究后者. 创建自定义服务器控件 创建自定义控件的第一步是选择以哪一个类作为基类来创建控件&#xff0c;Asp.net最常见的几个基…

Codeforces Round #447 (Div. 2) B. Ralph And His Magic Field 数学

题目链接 题意&#xff1a;给你三个数n,m,k;让你构造出一个nm的矩阵&#xff0c;矩阵元素只有两个值&#xff08;1&#xff0c;-1),且满足每行每列的乘积为k&#xff0c;问你多少个矩阵。 解法&#xff1a;首先&#xff0c;如果n&#xff0c;m奇偶不同&#xff0c;且k-1时&…

剑指offer三十六之两个链表的第一个公共结点

一、题目 输入两个链表&#xff0c;找出它们的第一个公共结点。 二、思路 如果存在共同节点的话&#xff0c;那么从该节点&#xff0c;两个链表之后的元素都是相同的。也就是说两个链表从尾部往前到某个点&#xff0c;节点都是一样的。我们可以用两个栈分别来装这两条链表。一个…

Oracle数据库相关命令

从cmd窗口进入SQL命令行 sqlplus / as sysdba; 查询所有用户 &#xff08;1&#xff09;使用具有DBA权限的账号登录数据库。 &#xff08;2&#xff09;执行如下命令。 SQL> select username from dba_users; -- 或者使用如下语句 SQL> select * from all_users; 创…

实时传输协议(RTP)

RTP简介 RTP是一种提供端对端传输服务的实时传输协议&#xff0c;用来支持在单目标广播和多目标广播网络服务中传输实时数据&#xff0c;而实时数据的传输则由RTCP协议来监视和控制。 RTP定义在RFC 使用RTP协议的应用程序运行在RTP之上&#xff0c;而执行RTP的程序运行在UDP…

Windows LTSC、LTSB、Server 安装 Windows Store 应用商店

下载安装包 打开网址 https://store.rg-adguard.net/ 以 PackageFamilyName 方式搜索 Microsoft.WindowsStore_8wekyb3d8bbwe 根据系统选择对应的包&#xff0c;每一种都要下载 安装 在下载目录按住 shift 键&#xff0c;然后鼠标右键&#xff0c;打开 Powershell 执行安装命令…

sybase Invalid command line argument 'and'.

解决方法&#xff1a; 先到sybase central安装目录下&#xff08;我这里是&#xff1a;C:\sybase\ASE-12_0\bin\syconfig.exe&#xff09;双击看能不能正常运行。如果可以&#xff0c;就证明是开始菜单里的“配置服务器”的快捷方式有问题&#xff1b; 然后删除开始菜单里面“配…

Jmeter调试工具---Debug Sampler

使用场景&#xff1a;脚本开发是&#xff0c;调试用&#xff08;正式测试时需删除&#xff09;&#xff0c;Debug Sampler会把我们自定义的变量输出在response data中 使用设置&#xff1a;JMeter properties和System properties通常都选false&#xff0c;这两个就是JMeter和系…

Cannot resolve method 'getParameter( )'

在JSP页面中&#xff0c;getParameter 和 setAttribute 显示红色&#xff0c;IDEA的提示信息为&#xff1a; Cannot resolve method getParameter(...) 和 Cannot resolve method setAttribute(...) 原因是缺少servlet-api.jar和jsp-api.jar这两个jar包。 将这两个jar包导入项…

产品设计体会(1011)少做就是多做

有100个需求&#xff0c;资源只够做10个&#xff0c;是的&#xff0c;当时就是这样。标题是马云的一句话。2007年国庆长假回来&#xff0c;基本在全力做网店版“批量定时上架”的需求&#xff0c;n多的pk、评审、确认会搞得头昏脑胀&#xff0c;不过终于算是把需求确认掉了。其…

socket与TcpListener/TcpClient/UdpClient 的区别及联系

点击此处下载源代码 应用程序可以通过 TCPClient、TCPListener 和 UDPClient 类使用传输控制协议 (TCP) 和用户数据文报协议 (UDP) 服务。这些协议类建立在 System.Net.Sockets.Socket 类的基础之上&#xff0c;负责数据传送的细节。(也就是说TCPClient、TCPListener 和 UDP…

Sql Server 中锁的概念

锁的类型:(1) 共享锁:共享锁用于所有的只读数据操作.(2) 修改锁:修改锁在修改操作的初始化阶段用来锁定可能要被修改的资源&#xff0c;这样可以避免使用共享锁造成的死锁现象(3) 独占锁:独占锁是为修改数据而保留的。它所锁定的资源&#xff0c;其他事务不能读取也不能修改。独…

Java的Clone

Clone 就是重写clone()方法 两种办法进行深拷贝&#xff0c;一种是Clonable接口&#xff0c;一种是Serializable接口 实现代码如下 package Clone;public class Student implements Cloneable {private String name;public String getName() {return name; }public void setNam…

MySQL登录时ERROR 1045:Access denied for user ‘root’@’localhost’ (using password: YES)

MySQL登录时ERROR 1045错误win10_x64系统中登录MySQL时出现1045错误 错误描述&#xff1a; ERROR 1045&#xff1a;Access denied for user ‘root’’localhost’ (using password: YES) 解决方法&#xff1a; 1、停止MySQL服务 方法&#xff1a;在DOS窗口使用net stop mysql…

对L2和B2的阐述

根据英特尔官方称&#xff0c;之所以把B2步进E6300改产成L2步进的原生2M的E6300&#xff0c;原因在于B2在生产上和高端6800属一类型的内制芯片&#xff0c;在针脚面都拥有7颗主晶体&#xff0c;是很容易让E6300超到很高&#xff0c;E6300面临着以后的中端市场不得不将其价格低下…

江西省移动物联网发展战略新闻发布会举行-2017年10月江西IDC排行榜与发展报告...

编者按&#xff1a;当人们在做技术创新时&#xff0c;我们在做“外包产业“&#xff1b;当人们在做制造产业&#xff0c;我们在做”服务产业“&#xff1b;江人们在做AI智能时&#xff0c;我们在做”物联网“崛起&#xff0c;即使有一个落差&#xff0c;但红色热土从不缺少成长…

获取Linux/Unix文件系统信息

设计一套SAP监控系统http://blog.csdn.net/bayaci/archive/2009/10/13/4666456.aspx显示系统df&#xff08;linux &#xff09;/ bdf (hpunix)的信息执行代码&#xff0c;获取诸如bdf /usr命令后的信息&#xff1a;DiskInfo diskInfo new DiskInfo();diskInfo.info(directory)…

MySQL数据库相关命令

MySQL数据库 1、MySQL导出命令 mysqldump -h IP -u 用户名 -p 数据库名 > 导出的文件名 注&#xff1a;mysqldump命令是在cmd窗口初始目录下的命令&#xff0c;不是进入mysql执行的命令。 或者使用如下命令 mysqldump -u 用户名 -p 数据库名称 > 导出的文件名 2、MyS…

docker(3)docker下的centos7下安装jdk

1、将jdk-8u65-linux-x64.tar.gz文件传到docker的宿主机上 rz 2、将宿主机上的jdk-8u65-linux-x64.tar.gz复制到centos7的容器下 #在宿主机上执行 [rootcent7-zuoys ~]# docker cp /root/jdk-8u65-linux-x64.tar.gz a3b489cec243:/software#a3b489cec243是指定的centos7容器id …

请问,关闭子窗口提示错误,大家遇到这样的问题吗?

请问,关闭子窗口提示错误,大家遇到这样的问题吗? Delphi / Windows SDK/APIhttp://www.delphi2007.net/DelphiBase/html/delphi_20061207133720244.html关闭子窗口时总是提示下面的错误: Access violation at address 00000008. Read of address 00000008 …

Hadoop学习笔记一 简要介绍

Hadoop学习笔记一 简要介绍 这里先大致介绍一下Hadoop. 本文大部分内容都是从官网Hadoop上来的。其中有一篇介绍HDFS的pdf文档&#xff0c;里面对Hadoop介绍的比较全面了。我的这一个系列的Hadoop学习笔记也是从这里一步一步进行下来的&#xff0c;同时又参考了网上的很多文…