java实训笔记(十一)之静态网页技术

9 篇文章 0 订阅
2 篇文章 0 订阅

一、概述:

在前面的学习掌握了java C/S的开发模式,从今天开始就要进入B/S的学习中,在学习动态网站之前首先要学习静态网页技术,那首先就要了解静(动)态网页的概念,动态网站的意思:人的不同,内容会不一致,就是动态网页技术,那静态网站的所有内容都是一致,不会因为人的不同而引起内容的不同。在静态网页技术中,要掌握css以及javascript的技术。

二、CSS的用法

1、概念

CSS(层叠样式表),用来控制和修改网页的外观,是用来美化网页的页面。

1、   CSS语法

1、CSS的使用有三种方法:

1、 直接样式表 :将样式写在页面元素的style属性中,此样式只能作用在单一的元素上。

 
 

<p style=”color:red”>css真好玩</font>

 

样式表由很多对属性:值所构成,彼此之间采用分号分割。

 

样式表的属性用法要多去查阅css2的帮助文档或者在w3shool网站上查找。

 

2、 内部样式表 :将样式表写在head标记对中。

 
 

<head>

 

<style type=”text/css”>

 

p{color:red}

 

</style>

 

此样式能影响所有使用p的段落。

3、 外部样式表:将样式表写成一个扩展名为css的文件中,在页面中加入link比较

 
 

<!-- first.css  -->

 

P{color:red;}

 

First.html

 
 

<link  rel="stylesheet" href="first.css"  type="text/css"/>

 

在href中,要注意的时路径问题当把样式放在style文件夹里是,前面要加上style/first.css。

2、选择器:

在内部样式表和直接样式表中需要给样式表取名称,有三种取名称的方法:

Ø  html选择器:选择html中可以的标记

Ø  类选择器:可以自定义名称,在名称前面有点修饰,在需要的地方使用class属性。

Ø  id选择器:可以自定义名称,在名称前面有#修饰,在需要的地方使用id属性。

类选择器和id选择器的区别:类选择器可以重复使用,id选择器只能使用一次。

3、技巧

在使用CSS中,可以一些特殊符号以及组合

1、*号,代码所有对象。

2、当需要对多个元素设置一个样式时,可以把多个选择符写在一起,并用逗号分隔

p,li,td{color:red;}

 

3、包含选择符:当使用在某一个特定标记中的字标记选用样式时,可以把标记和子标记写出来,用空格分隔。

td span{color:red;}

p#test {color:red}//只能在段落使用id选择符

 

4、子元素选择符:如果您不希望选择任意的后代元素,而是希望缩小范围,只选择某个元素的子元素,请使用子元素选择器。

例如,如果您希望选择只作为h1 元素子元素的strong 元素,可以这样写:

h1 >strong {color:red;}

5、相邻兄弟选择符:选择紧接在另一元素后的元素,且二者有相同父元素。

例如,如果要增加紧接在h1 元素后出现的段落的上边距,可以这样写:

h1 + p {margin-top:50px;}

这个选择器读作:“选择紧接在 h1 元素后出现的段落,h1 和 p 元素拥有共同的父元素”。

 

三、JS的用法

1、基本概念:javascript是有java所派生出来的弱类型的语言,有其他程序语言的特征。用来实现网页中表单的验证以及网页动画实现。通过在head标记对中或者在所需要的地方加入script标记嵌入html中。在javascript中声明变量不用指定变量的数据类型,是根据所赋值来决定是何数据类型,可以通过typeof运算符来查看数据类型。

四、综合示例

示例1:实现网页计算器。

解决问题方法:1、事件处理程序,在javascript中可以使用函数来表示处理函数;

2、  如何获得控件的值:通过document.getElementById()的形式来访问对象;

3、  如何把获得值放在html的标记之间通过innerText和innerHTML,两者之间的区别:innerText是文本,innerHTML可以用来写标记。

代码:

 
 

<html>

 

<head>

 

<style type="text/css">

 

.pageWidth{margin:auto;width:600px}

 

#lay{height:400px;background:#fba}

 

table{text-align:center}

 

.fot{padding-top:5px;}

 

</style>

 

<script type="text/javascript">

 

function calc(){

 

    var  num1 = parseInt(document.getElementById("num1").value);

 

    var  op=    document.getElementById("op").value;

 

    var  num2 = parseInt(document.getElementById("num2").value);

 

    var  result =0;   

 

    switch(op){

 

       case  "+": result = num1+num2;

 

       break;

 

       case  "-":result = num1 -num2;

 

       break;

 

       case  "*":result = num1*num2;

 

       break;

 

       case  "/":result = num1 /num2;

 

       break;

 

          

 

    }

 

    document.getElementById("result").innerText  = result;

 

    //document.getElementById("result").style.border="1px  solid

 

#f00";

 

}

 

</script>

 

</head>

 

<body>

 

<div id="lay"  class="pageWidth">

 

<table align="center">

 

    <tr>

 

       <td  colspan="3" class="fot">计算器</td>

 

    </tr>

 

    <tr  height="5px"><td  colspan="3"></td></tr>

 

    <tr>

 

       <td>第一个数</td>

 

       <td><input  type="text" id="num1"/></td>

 

       <td><font  color="red">文本框填写内容不正确</font></td>

 

    </tr>

 

    <tr  height="5px"><td  colspan="3"></td></tr>

 

    <tr>

 

       <td>运算符</td>

 

       <td><select  id="op">

 

           <option  value="+">+</option>

 

           <option  value="-">-</option>

 

           <option  value="*">*</option>

 

           <option  value="/">/</option>

 

       </select></td>

 

       <td></td>

 

    </tr>

 

    <tr  height="5px"><td  colspan="3"></td></tr>

 

    <tr>

 

       <td>第二个数</td>

 

       <td><input  type="text" id="num2"/></td>

 

       <td></td>

 

    </tr>

 

    <tr  height="5px"><td  colspan="3"></td></tr>

 

    <tr>

 

       <td><input  type="button" value="结果"  οnclick="calc

   

()"/></td>

 

       <td  colspan="2" id="result">0</td>

 

      

 

    </tr>

 

</table>

 

 

 

</div>

 

</body>

 

 

 

</html>

 

在以上示例中还可以引申修改其中的样式,写法有两种:

1、通过document.getElementById().style后面接具体的样式,在写样式时要注意css的样式有两个以上单词构成时,去掉中间的连字符第一个单词之外,其他单词大写。

2、可以在head标记对中,或者在css文件中,预先定义类选择器,然后在js中只需要写:document.getElementById().className=”类选择器名称”

示例2:基于示例1实现对文本框内容的验证。

要求:文本框的内容只能为数字,让是字母时,出现错误提示。

解决问题方法:

1、 信息的显示和隐藏,在css中有display何visibility来实现,display隐藏时不占位置,visibility隐藏时保留控件所占的位置。由于我们的信息显示在一行的最后一个单元格中,所以在这里我们应该选择visibility来实现,如果我们是在下一行显示错误信息,那就应该选用display。

2、 如果验证是否为字符,这里有两种方法实现:

a)   通过循环遍历来判断;

b)   通过正则表达式来判断;

正则表达式的用法:

在js中要实现正则表达式,首先就要创建正则表达式的对象,创建对象有两种方法:

方法一:

var reg = /[0-9]{3}/;

方法二

var reg = new RegExp(“[0-9]{3}”); 

在正则表达式中,字符的含义:

[0-9],数字0到9

{n},至少匹配n次

+,匹配1次或者多次

*匹配0次或者多次

^开头

$结尾

代码:

 
 

方法一:

 

function check(){

 

     var obj = document.getElementById("num1");

 

     var str = obj.value;

 

     var flag=false;

 

     for (var chr in  str)

 

     {

 

         if(str.charAt(chr)<'0' || str.charAt(chr)>'9'){

 

            flag = true;

 

            break;

 

         }else{

 

            flag = false;

 

         }

 

     }

 

     if(flag){

 

         document.getElementById("mess").style.visibility  ="visible";

 

     }else{

 

         document.getElementById("mess").style.visibility="hidden";

 

     }

 

}

 

方法二:

 

function chkReg(){

 

     var obj = document.getElementById("num1");

 

     var str = obj.value;

 

     var flag=false;

 

     var reg = new RegExp(" [0-9]{1,10} ");

 

     if(!reg.test(str)){

 

         document.getElementById("mess").style.visibility  ="visible";

 

       

 

     }else{

 

         document.getElementById("mess").style.visibility="hidden";

 

    

 

     }

 

 

 

}调用代码

 

<div id="lay"  class="pageWidth">

 

<table align="center">

 

    <tr>

 

       <td  colspan="3" class="fot">计算器</td>

 

 

 

    </tr>

 

    <tr  height="5px"><td  colspan="3"></td></tr>

 

    <tr>

 

       <td>第一个数</td>

 

       <td><input  type="text" id="num1" οnblur="check()"/></td>

 

       <td><font  color="red" style="visibility:hidden"  id="mess">*文本框填写内容不正确</font></td>

 

    </tr>

 

    <tr  height="5px"><td  colspan="3"></td></tr>

 

    <tr>

 

       <td>运算符</td>

 

       <td><select  id="op">

 

           <option  value="+">+</option>

 

           <option  value="-">-</option>

 

           <option  value="*">*</option>

 

           <option  value="/">/</option>

 

       </select></td>

 

       <td></td>

 

    </tr>

 

    <tr  height="5px"><td  colspan="3"></td></tr>

 

    <tr>

 

       <td>第二个数</td>

 

       <td><input  type="text" id="num2"/></td>

 

       <td></td>

 

    </tr>

 

    <tr  height="5px"><td  colspan="3"></td></tr>

 

    <tr>

 

       <td><input  type="button" value="结果"  οnclick="calc()"/></td>

 

       <td  colspan="2" id="result">0</td>

 

      

 

    </tr>

 

</table>

 

</div>

 

示例3:实现日历

解决问题方法:

代码:

 
 

var titles=["日","一","二","三","四","五","六"];

 

     var days=[31,28,31,30,31,30,31,31,30,31,30,31];

 

     var date = new Date();

 

     var current_day=date.getDate();

 

     date.setDate(1);

 

     var d =1;

 

    

 

     var week =date.getDay();

 

     var date_rows = Math.round((days[date.getMonth()]+week+6)/7);

 

    

 

     document.write("<div  style='background:#aaa'><table>");

 

     document.write("<tr>");

 

     for(var i=0;i<7;i++){

 

        document.write("<th>"+titles[i]+"</th>");

 

     }

 

     document.write("</tr>");

 

     for(var i=0;i<date_rows;i++){

 

         document.write("<tr>");

 

         for(var j=0;j<7;j++){

 

            if(i==0 && j<week){

 

                 document.write("<td></td>");

 

            }

 

            else{

 

               

 

                var sid= "t"+d;

 

                //alert(sid);

 

                document.write("<td  id='"+sid+"'>"+d+"</td>");

 

                if(d==current_day){

 

                    var cid =  "t"+current_day;

 

     document.getElementById(cid).style.background="#f00";  

 

                }

 

                d++;

 

                 if(d>days[date.getMonth()]){

 

                    d =  days[data.getMonth()];

 

                }

 

               

 

            }

 

         }

 

          

 

         document.write("</tr>");

 

     }

 

     document.write("</table></div>");

 

示例4:改进版日历:

代码:

 
 

<html>

 

<head>

 

<style type="text/css">

 

#lay2{height:100px;width:150px}

 

</style>

 

<script  type="text/javascript">

 

function getCalendar()

 

{

 

 

 

    var titles = ["日", "一", "二", "三", "四", "五", "六"];

 

    var days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];

 

    var date = new Date();

 

    var current_day = date.getDate();//获得当前日期

 

    date.setDate(1);

 

    var d = 1;

 

    var str = "";

 

    var week = date.getDay();

 

    var date_rows = Math.round((days[date.getMonth()] + week + 6) / 7);

 

    str += "<table><tr>";

 

 

 

    for(var i = 0; i < 7; i ++ )

 

    {

 

       str += "<th>" + titles[i] + "</th>";

 

    }

 

    str += "</tr>";

 

    for(var i = 0; i < date_rows; i ++ )

 

    {

 

       str += "<tr>";

 

       for(var j = 0; j < 7; j ++ )

 

       {

 

          if(i == 0 && j < week)

 

          {

 

            str +=  "<td></td>";

 

          }

 

          else

 

          {

 

 

 

            var sid = "t" + d;

 

            // alert(sid);

 

            str += "<td  id='"+sid+"'>" + d + "</td>";

 

 

 

            d ++ ;

 

            if(d > days[date.getMonth()])

 

            {

 

               d = days[date.getMonth()];

 

               break;

 

            }

 

 

 

          }

 

       }

 

 

 

       str += "</tr>";

 

    }

 

    str += "</table>";

 

    document.getElementById("lay2").innerHTML = str;

 

    var cid = "t" + current_day;

 

    document.getElementById(cid).style.background = "#f00";

 

}

 

< / script >

 

</head>

 

 

 

<body  οnlοad="getCalendar()">

 

 

 

<div  id="lay2"></div>

 

 

 

</body>

 

 

 

</html>

 

示例5:超链接实现javascript。

在href中写入javascript,就必须以javascript开头,后面接冒号,冒号后面写js代码、函数和void(0)。

Javascript:void(0)表示是一个死链接,#则会跳到页首的位置。

 
 

打开新窗口

 

<script type=”text/javascript”>

 

function openWin(tag,obj){

 

obj.target=”_blank”;

 

obj.href=”/test.jsp?uid=”+tag;

 

obj.click();

 

}

 

</script>

 

<a href=”javascript:void(0)” οnclick=”openWin(3,this)”>test</a>

 

慎用JavaScript:void(0)

JavaScript中void是一个操作符,该操作符指定要计算一个表达式但是不返回值。
void 操作符用法格式如下:
1. javascript:void (expression)
2. javascript:void expression
expression是一个要计算的 JavaScript 标准的表达式。表达式外侧的圆括号是可选的,但是写上去是一个好习惯。我们可以使用 void 操作符指定超级链接。表达式会被计算但是不会在当前文档处装入任何内容。面的代码创建了一个超级链接,当用户点击以后不会发生任何事。当用户点击链接时,void(0) 计算为 0,但在JavaScript 上没有任何效果。

<ahref="javascript:void(0)">单击此处什么也不会发生</a>

也就是说,要执行某些处理,但是不整体刷新页面的情况下,可以使用void(0),但是在需要对页面进行refresh的情况下,那就要仔细了。

其实我们可以这样用<ahref="javascript:void(document.form.submit())">,这句话会进行一次submit操作。那什么情况下用void(0)比较多呢,无刷新,当然是Ajax了,看一下Ajax的web页面的话,一般都会看到有很多的void(0),:) ,所以在使用void(0)之前,最好先想一想,这个页面是否需要整体刷新。

 

 
 

<html>

 

<head>

 

<title>

 

</title>

 

<style type="text/css">

 

</style>

 

<script  type="text/javascript">

 

function fun(){

 

     document.forms[0].submit(); 

 

 

 

}

 

</script>

 

</head>

 

<body >

 

<form action=""  method="post" >

 

<input type="text"/>

 

<a href="javascript:fun()"  target="_blank" >收件箱</a>

 

</form>

 

</body>

 

</html>

 

 

示例6:动态显示时间

在js中,所有动画的实现都需要用window对象的方法,setTimeout和setInterval,这个两个方法。

 
 

<html>

 

 

 

<head>

 

 

 

<title>

 

</title>

 

<style type="text/css">

 

#lay{width:100px;height:30px;background:#fba}

 

</style>

 

<script  type="text/javascript">

 

function getCurrentTime(){

 

     var date = new Date();

 

     var strTime =  date.getHours()+":"+date.getMinutes()+":"+date.getSeconds();

 

     document.getElementById("lay").innerText=strTime;

 

     window.setTimeout("getCurrentTime()",1000);

 

    

 

}

 

 

 

</script>

 

 

 

</head>

 

<body  οnlοad="getCurrentTime()">

 

<div id="lay"></div>

 

</body>

 

 

 

</html>

 

 

示例7:通过键盘的方向键控制层的移动。

解决问题的方法:

1、首先通过键盘事件,onkeydown、onkeyup和onkeypress,其中onkeypress无法获得功能键及小数字键的值。

2、如何获得按键的值,在这里可以通过event对象,event是javascript中关于事件的对象信息。

代码:

 
 

<html>

 

<head>

 

<title>

 

</title>

 

<style  type="text/css">

 

#lay{width:100px;height:30px;background:#fba;left:0px;position:relative;top:0px}

 

</style>

 

<script  type="text/javascript">

 

    function getInfo(){

 

         //alert(String.fromCharCode(event.keyCode));

 

        var key=event.keyCode;

 

        if(key==39){   //39是向右方向键的ascii

 

            move();

 

        }

 

    }

 

   

 

    function move(){

 

        var leftLoc =  document.getElementById("lay").style.posLeft;

 

        leftLoc +=10;

 

         document.getElementById("lay").style.posLeft = leftLoc;

 

       

 

    }

 

   

 

    function getCurrentTime(){

 

    var date = new Date();

 

    var strTime =  date.getHours()+":"+date.getMinutes()+":"+date.getSeconds();

 

     document.getElementById("lay").innerText=strTime;

 

     window.setTimeout("getCurrentTime()",1000);

 

   

 

}

 

</script>

 

</head>

 

<body  οnkeydοwn="getInfo()"   οnlοad="getCurrentTime()">

 

<div  id="lay"></div>

 

</body>

 

</html>

 

注意,在要实现层的移动时,一定要对层进行定位,层默认的布局是static,如未指定位置,则层不会一定。

在这里的代码仅仅实现方向键向右移动时,层会移动,其余方向以及到边界问题大家自行补充。

示例8:选项卡的制作。

代码:

 
 

<html>

 

 

 

<head>

 

<style>

 

#lay{width:150px;height:30px;}

 

li{list-style:none;width:30px;float:left}

 

 

 

.now{background:#fba;}

 

 

 

</style>

 

 

 

<script  type="text/javascript">

 

function setTab(name,curr,total){

 

     for(var i=1;i<=total;i++){

 

         var tab = document.getElementById(name+i);

 

         var cont = document.getElementById(name+"_t_"+i);

 

//         tab.className=i==curr?"now":"";

 

//         cont.style.display=i==curr?"block":"none";

 

         if(i==curr){

 

            tab.className="now";

 

             cont.style.display="block";

 

         }else{

 

            tab.className="";

 

             cont.style.display="none";       

 

         }

 

     }

 

 

 

}

 

 

 

</script>

 

<title></title>

 

 

 

</head>

 

 

 

<body>

 

<div>

 

     <div id="lay">

 

         <ul >

 

            <li id="c1"  class="now"    οnmοuseοver="setTab('c',1,3)" >1</li>

 

            <li id="c2"   οnmοuseοver="setTab('c',2,3)"  >2</li>

 

            <li id="c3"  οnmοuseοver="setTab('c',3,3)" >3</li>

 

         </ul>

 

     </div>

 

     <div>

 

         <ul id="c_t_1">

 

             <li>first</li></ul>

 

         <ul id="c_t_2" style="display:none">

 

            <li>second</li>

 

         </ul>

 

         <ul id="c_t_3" style="display:none">

 

            <li>third</li>

 

         </ul>

 

     </div>

 

</div>

 

</body>

 

 

 

</html>

 

 

 

示例9:给下列表添加年。

Dom:是操作html或者xml的标准方法。可以在不同的浏览器中都能运行。在dom中把所有元素都当作对象来处理。Dom的结构如下图所示:

代码1:

 

 
 

<html>

 

 

 

<head>

 

 

 

<title></title>

 

 

 

<script  type="text/javascript">

 

//第二种方法是通过innerHTML或者innerText来编写

 

// function  getYears(){

 

//    var date = new Date();

 

//    var str = "";

 

//    for(var i = 1900; i <=  date.getFullYear(); i ++ ){

 

//        str += "<option>" + i  + "</option>";

 

//    }

 

//     document.getElementById("year").innerHTML = str;

 

 

 

// }

 

 

 

//第三种方法:通过dom的方式来编写

 

function  getYears()

 

{

 

   var date = new Date();

 

   for(var i = 1900; i <  date.getFullYear(); i ++ )

 

   {

 

      var obj = document.createElement("option");

 

      obj.setAttribute("value", i);

 

      obj.innerText = i;

 

 

 

       document.getElementById("year").appendChild(obj);

 

   }

 

}

 

function  getSelectValue()

 

{

 

   var obj =  document.getElementById("year");

 

   var index = obj.selectedIndex;

 

   alert(obj.options[index].innerText);

 

}

 

</script>

 

 

 

</head>

 

 

 

<body  οnlοad="getYears()">

 

<!—这里是第一种方法

 

<select >

 

 

 

<script  type="text/javascript">

 

// var date =  new Date();

 

// for(var i =  1900; i < date.getFullYear(); i ++ ){

 

//  document.write("<option>" + i + "</option>");

 

// }

 

 

 

 

 

</script>

 

 

 

</select>

 

-->

 

 

 

<select  id="year">

 

 

 

</select>

 

 

 

<a  href="javascript:void(0)"  οnclick="getSelectValue()">test</a>

 

</body>

 

 

 

</html>

 

 

示例10:如何动态添加表中的行。

代码:

 

 
 

<html>

 

 

 

<head>

 

<style>

 

.test{width:100px;height:30px;background:#fba}

 

 

 

</style>

 

 

 

<title></title>

 

 

 

<script  type="text/javascript">

 

function  addRow(){

 

   

 

    var tr =  document.createElement("tr");

 

    document.createComment()

 

    var td1 =  document.createElement("td");

 

    td1.className="test";

 

    td1.innerText="1";

 

    var td2 = document.createElement("td");   

 

    td2.className="test";

 

    td2.innerText="2";

 

    var obj =  document.getElementById("t");

 

    tr.appendChild(td1);

 

    tr.appendChild(td2);

 

    obj.appendChild(tr);

 

}

 

 

 

</script>

 

 

 

 

 

</head>

 

 

 

<body>

 

<table >

 

<tbody  id="t">

 

</tbody>

 

 

 

</table>

 

<a  href="javascript:void(0)"  οnclick="addRow()">add</a>

 

</body>

 

 

 

</html>

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值