CSSs width属性 和offsetwidth属性深入理解

本人菜鸟一枚,趁着奥运期间,一边看奥运,一边学习,最近在慕课网学习前端技术,学习过程中有向很多前辈们博客学习,现在就来分享我的学习所得。

慕课网,导航条菜单的制作,使用javascript去制作伸缩菜单(水平方向上),下面是学习过程中的一个小插曲:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>导航菜单</title>
<style type="text/css">
* { margin: 0; padding: 0; font-size: 14px; }
a { color: #333; text-decoration: none }
ul { list-style: none; height: 30px; border-bottom: 5px solid #F60; margin-top: 20px; padding-left: 50px; }
ul li { float: left }
ul li a { display: block; height: 30px; text-align: center; line-height: 30px; width:120px; background: #efefef; margin-left: 1px; }
a.on, a:hover { background: #F60; color: #fff; }
</style>
<script>
window.onload=function(){
    var aA=document.getElementsByTagName(‘a‘);
    for(var i=0; i<aA.length; i++){
        aA[i].onmouseover=function(){
            var This=this;

            This.time=setInterval(function(){
                    This.style.width=This.offsetWidth+8+"px";
                    if(This.width>=160"px")
                    clearInterval(This.time);
                },30)
        }
        aA[i].onmouseout=function(){
                clearInterval(this.time);
                var This=this;
                this.time=setInterval(function(){
                    This.style.width=This.offsetWidth-8+"px";
                    if(This.offsetWidth<=120){
                        This.style.width=‘120px‘;
                        clearInterval(This.time);
                    }
                },30)
        }
    }
}
</script>
</head>
<body>
<ul>
    <li><a class="on" href="#">首  页</a></li>
    <li><a href="#">新闻快讯</a></li>
<li><a href="#">产品展示</a></li>
    <li><a href="#">售后服务</a></li>
    <li><a href="#">联系我们</a></li>
</ul>
</body>
</html>
 1 <script>
 2 window.onload=function(){
 3     var aA=document.getElementsByTagName(‘a‘);
 4     for(var i=0; i<aA.length; i++){
 5         aA[i].onmouseover=function(){
 6             var This=this;
 7
 8             This.time=setInterval(function(){
 9                     This.style.width=This.offsetWidth+8+"px";
10                     if(This.width>=160)
11                     clearInterval(This.time);
12                 },30)
13         }
14         aA[i].onmouseout=function(){
15                 clearInterval(this.time);
16                 var This=this;
17                 this.time=setInterval(function(){
18                     This.style.width=This.offsetWidth-8+"px";
19                     if(This.offsetWidth<=120){
20                         This.style.width=‘120px‘;
21                         clearInterval(This.time);
22                     }
23                 },30)
24         }
25     }
26 }
27 </script>

注意到第10行中的

f(This.width>=160)这一句代码,这句代码是错误的,其实这样的错误的原因是因为对width offsetwidth属性不能深入理解导致的,width是字符串,offsetwidth是数值,那我就想,我在160后面加上“px”,这样这句话就成立了啊,呵呵,可是这是一个判断语句,字符串不参加“>=”的比较啊,所以我瞬间就懂了。  说到这里,估计我再也不会犯这样的错误了。出现这样的错误,网页浏览器就直接不执行这一句话.
时间: 2024-08-29 08:57:08

CSSs width属性 和offsetwidth属性深入理解的相关文章

深入理解css中position属性及z-index属性

深入理解css中position属性及z-index属性 在网页设计中,position属性的使用是非常重要的.有时如果不能认识清楚这个属性,将会给我们带来很多意想不到的困难. position属性共有四种不同的定位方法,分别是static.fixed.relative.absolute.最后将会介绍和position属性密切相关的z-index属性. 第一部分:position: static static定位是HTML元素的默认值,即没有定位,元素出现在正常的流中,因此,这种定位就不会收到t

【拼爹坑爹不比爹】深入理解css中position属性及z-index属性

总结:拼爹坑爹不比爹 1,定位移动:距左上角left+top;(移动后对于移动前:如果值为负数,则直接换成整数:如果值为整数,则直接改变相对方向.)2,单一父元素不设值,子z-index才奏效:"不比爹"3,多个父元素,"拼爹坑爹"(子凭父贵,子贵父不贵)(爹设值,因外有body)4,多个父元素多子元素,各父各子高低相互比,就是不比爹:>< [转]深入理解css中position属性及z-index属性 在网页设计中,position属性的使用是非常重要

JS面向对象篇一、理解对象及属性特性(属性描述符)

本文内容 1.理解对象; 2.ECMAScript有两种属性类型:数据属性和访问器属性(getter和setter函数); 3.数据属性的属性特性:[[Configurable]].[[Enumerable]].[[Writable]].[[value]]; 4.访问器属性的属性特性:[[Configurable]].[[Enumerable]].[[get]].[[set]]; 5.Object.defineProperty().Object.defineProperties().Object

编写Delphi控件属性Stored和Default的理解及应用

property ButtonSize: Integer read FButtonSize write SetButtonSize default 0;    property Color: TColor read FColor write SetColor default clBtnHighlight;    property Increment: TScrollBarInc read FIncrement write FIncrement stored IsIncrementStored d

Android实习札记(10)---ImageView的src属性 VS blackground属性

Android实习札记(10)---ImageView的src属性 VS blackground属性                                                                              转载请注明出处:coder-pig 问题分析 相信大家对于ImageView图片组件并不陌生吧,见名知意,就是用来显示图片的咯! 而显示图片的话可以通过src属性,又或者blackground属性来进行设置! 这些大家都知道,但是有没有去纠结下

1.1 合用weightSum属性和layout_weight属性

<打造高质量Android应用:Android开发必知的50个诀窍>第1章活用布局,本章将介绍Android布局相关的一些窍门和建议.通过本章,读者不仅可以学习如何从零开始创建特定类型的布局,还可以学到如何改进和优化现有布局.本节为大家介绍合用weightSum属性和layout_weight属性. AD:2014WOT全球软件技术峰会北京站 课程视频发布 第1章 活用布局 本章将介绍Android布局相关的一些窍门和建议.通过本章,读者不仅可以学习如何从零开始创建特定类型的布局,还可以学到如

Hibernate inverse属性与cascade属性

理解: inverse属性为false的那一端,拥有管理关系维护的权利 cascade属性指级联,说的通俗点,在cascade那端指定的操作,会影响到所关联的对象 举个例子: 班级和学生的关系是一对多 班级class类包含id,名称和学生的Set集合 学生student类包含id,姓名和班级的id(外键) cascade属性:学生是依赖班级存在的,班级不存在,那么学生也不存在.也就是说,删除班级的同时,学生也就得删除,而不能反过来.一的那端删除时,多的那方已经没有意义了:而多的那端删除时,并不能

重新想象 Windows 8.1 Store Apps (77) - 控件增强: 文本类控件的增强, 部分控件增加了 Header 属性和 HeaderTemplate 属性, 部分控件增加了 PlaceholderText 属性

[源码下载] 重新想象 Windows 8.1 Store Apps (77) - 控件增强: 文本类控件的增强, 部分控件增加了 Header 属性和 HeaderTemplate 属性, 部分控件增加了 PlaceholderText 属性 作者:webabcd介绍重新想象 Windows 8.1 Store Apps 之控件增强 文本类控件的增强 为一些控件增加了 Header 属性和 HeaderTemplate 属性 为一些控件增加了 PlaceholderText 属性 示例1.演示

AngularJS的ng-repeat显示属性名和属性值

代码下载:https://files.cnblogs.com/files/xiandedanteng/AngularJSAuthorRepeat.rar 代码: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html ng-app="notesApp"> <