【网页学习】HTML + CSS + JS

基本语法学习查看:W3school

概念

1)基于HTTP的服务器

Apache、IIS、Nginx、Tomcat、JBoss。

2)浏览器工作原理

HTTP解析过程
DNS解析IP
CDN工作和设计
浏览器渲染

JQuery

1)鼠标点击

①toggle事件

当指定元素被点击时,在两个或多个函数之间轮流切换。
如果规定了两个以上的函数,则 toggle() 方法将切换所有函数。例如,如果存在三个函数,则第一次点击将调用第一个函数,第二次点击调用第二个函数,第三次点击调用第三个函数。第四次点击再次调用第一个函数,以此类推。

$("p").toggle(
  function(){
  $("body").css("background-color","green");},
  function(){
  $("body").css("background-color","red");},
  function(){
  $("body").css("background-color","yellow");}
);
$(selector).toggle(switch)//switchtrue - 显示元素;false - 隐藏元素

2)其它

 Hide() //隐藏 
 Show() //显示

HTML

1)DOM(文档对象模型(Document Object Model))

HTML DOM 是关于如何获取、修改、添加或删除 HTML 元素的标准。

①获取元素:

$("#id");//jQuery代码
var tbody = document.getElementById("tbody");//JS
var elCheck = document.getElementsByClassName("checkDelete");//获取到一个节点列表
for(var i=0;i<elCheck.length;i++){
    //对每个节点做处理。
    //如每个节点的点击事件:elCheck[i].onclick=function(){}
} 
//还有getElementsByTagName 使用指定的标签名返回所有的元素(作为一个节点列表)

②获取元素相关节点:
parentNode、childNodes[i]、firstChild以及lastChild

2)event对象

event代表事件的状态,例如触发event对象的元素、鼠标的位置及状态、按下的键等等。
①target

window.event.target;//规定哪个 DOM 元素触发了该事件。从而获取相关节点元素

3)符号

空格:&nbsp

CSS中:

 style='white-space:pre;'表示空白被浏览器保留
 white-space:nowrap; 这段代码强制字符不准换行。

4)table

<table border="8" cellspacing="10">// cellspacing 把表格单元格间距设置为 10 像素; cellpadding 属性规定的是单元边沿与单元内容之间的空间

5)图标

Font Awesome Icons使用,详情参考Font Awesome Icons

        <link href="../resources/css/font-awesome.min.css" rel="stylesheet" type="text/css">

//使用图标的标签设置class="fa fa-arrow-left",此为图标名。

6)提示

①输入框提示:placeholder

<input type="text" placeholder="请输入姓名" id="name">

②鼠标悬浮提示:title

<span class="fa fa-arrow-left" title="点击返回列表" onclick="returnPage();" style="cursor:pointer"></span>

CSS

1)display

①block:此元素将显示为块级元素,此元素前后会带有换行符。
②inline:此元素会被显示为内联元素,元素前后没有换行符。使元素显示在同一行。
③none:此元素不会被显示
④table:此元素会作为块级表格来显示,表格前后带有换行符。
⑤list-item:等同ul。此元素会作为列表显示。在内容前面自动加上黑点。

2)布局宽度

width: calc(100% - 10px); //按百分比计算分布页面
min-width:120px;//防止页面变小后长度变化

3)去掉链接下划线

a{ text-decoration:none} // text-decoration:underline;添加下划线

4)鼠标

style=”cursor: pointer “//链接手型,多种浏览器支持
crosshair是十字型
text是移动到文本上的那种效果
wait是等待的那种效果
default是默认效果

5)其它属性

white-space: nowrap;//规定段落中的文本不进行换行
font-weight: bold;加粗

6)背景图片

background-image:url() 引入背景图片
background-repeat:no-repeat 设置背景图片是否重复平铺
background-position:left top 设置图片的css背景定位,left代表靠左,top代表靠上
background:url(图片地址) no-repeat left top

7)绝对路径和相对路径

相对路径:以引用文件之网页所在位置为参考基础,而建立出的目录路径。因此,当保存于不同目录的网页引用同一个文件时,所使用的路径将不相同,故称之为相对。

绝对路径:以Web 站点根目录为参考基础的目录路径。之所以称为绝对,意指当所有网页引用同一个文件时,所使用的路径都是一样的。

路径符号
“.”–目前所在路径
“..”–代表上一层目录
“../../”–代表上一层目录的上一层目录
“/”–代表根目录

JS

1)计算

①Math

Math.ceil(count / pagesize); //向上整除 4/3=2;
Math.floor(count / pagesize); //向下整除 4/3=1;

②eval

eval(string) 计算某个字符串,并执行其中的的 JavaScript 代码。

2)类型转换:

parseInt("1234blue"); //参数必须为string
parseFloat(“12.5”);  //参数必须为string

3)ajax:

Var message = “”;//在ajax();内部不可用return,所以需要return的地方给message赋值,ajax运行完再返回。
$.ajax({
        type: "get",
        url: url,
        async: false,// 默认是true.  false为同步,将整个浏览器锁死,执行结束后,才可以执行其它操作。 true是请求和其后面的操作是异步执行的,未执行完就可能已经执行了 ajax请求后面的操作
        datatype: "json",
        data: {
            "pageNo":Page,//参数
        },

        success: function(data) {
            if(data.result == 1) {

            }else{

            }
        },
        error: function() {
            console.log('数据加载失败');
        }
    });

4)元素

$(selector).attr(“id”)// 返回被选元素的属性值。如获取其id
$(selector).attr("class","hideRow") //设置被选元素的属性和值。如修改类名

5)页面跳转

①a标签的href和onclick属性

① onclick 先执行,然后是href执行。如果href有返回值,则页面内容将被替代
② onclick返回false,href不执行。

onclick="xxx();return false;".

③ 链接通过onclick执行操作。

<a href="javascript:void(0);" onclick="stick()”>

②Onclick函数中传字符串参数

onclick='selecthoods(\" "+a + "\");

③网页传参

window.location.search方法是截取当前url中“?”后面的字符串


//获取url中"?"符后的字串
//theRequest为一个类,类中成员为传递的参数
function GetRequest(url) {

   var theRequest = new Object();
   if (url.indexOf("?") != -1) {
      var str = url.substr(1);
      strs = str.split("&");
      for(var i = 0; i < strs.length; i ++) {
         theRequest[strs[i].split("=")[0]]=decodeURI((strs[i].split("=")[1]));
      }
   }
   return theRequest;
}

注意出现问题:汉字传参之后,网页无法显示。
解决方案:对汉字进行URL编码encodeURI(TName)即可。

④页面加载即运行

$(document).ready(function() {

});

⑤页面刷新

window.location.href = "brief.html";//页面链接切换为此链接

⑥点击后退

onclick=”javascript: window.history.back()”或者window.history.go(-1)

⑦打开新窗口

//<a>写法
<a href="http://" target="_blank">Welcome</a>
//JS写法
window.open("http://");                 

6)语法

①each

var code = "";
    $.each(data, function(i, item) {

        var City = item.city.trim(); //区县               
        var Time= item.TM.trim(); //时间

        code = code + '<tr>' +
            '<th>' + (i + 1) + '</th>' +
            '<th>' + City + '</th>' +
            '<th>' + Time + '</th>' +
            '</tr>';
    });
    var tbody = document.getElementById("tbody");
    tbody.innerHTML = code;

②控制台输出

console.log(message)

③try-catch

 try {
  // 此处是可能产生例外的语句
  } catch(error) {
  // 此处是负责例外处理的语句
  } finally {
  // 此处是出口语句
  }

④typeof

a.对于字符串类型, typeof 返回的值是 string。

typeof("123");//返回的值是string。

b.对于布尔类型, typeof 返回的值是 boolean
c.对于对象、数组、null 返回的值是 object

typeof(window);typeof(document);typeof(null)//返回的值都是object

d.对于函数类型,返回的值是 function。

typeof(eval);typeof(Date);//返回的值都是function

c.未定义的(比如说不存在的变量、函数或者undefined),将返回undefined。
d.对于数字类型返回number.
在JavaScript中,特殊的数字类型还有几种:
Infinity           表示无穷大特殊值
NaN            特殊的非数字值
Number.MAX_VALUE    可表示的最大数字
Number.MIN_VALUE    可表示的最小数字(与零最接近)
Number.NaN         特殊的非数字值
Number.POSITIVE_INFINITY 表示正无穷大的特殊值
Number.NEGATIVE_INFINITY 表 示负无穷大的特殊值

typeof(1);//返回number

⑤数组array对象

//创建
waterAll = new Array();
waterAll[0] = water1;
waterAll[1] = water2;

new Array(size);
new Array(element0, element1, ..., elementn);

W3School中array方法的描述为:
array

7)解码

decodeURI(message);// 将 %20 转换成 空格 ;encodeURI将 空格 转换成 %20

8)鼠标事件

①鼠标移入移出事件

<style type="text/css">
.style0{
background-color:#FFFF00;
}
.style1{
background-color:#00FFFF;
}
</style>

<td id="td1" onmousemove="document.getElementById('td1').className='style0';" onmouseout="document.getElementById('td1').className='style1'"><div align="center" class="STYLE2">主页</div></td>

②禁止页面随鼠标滑轮滚动,缩放

<script language="javascript">
 var scrollFunc=function(e){ 
  e=e || window.event; 
  if(e.wheelDelta && event.ctrlKey){//IE/Opera/Chrome 
   event.returnValue=false;
  }else if(e.detail){//Firefox 
   event.returnValue=false; 
  } 
 }  

 /*注册事件*/ 
 if(document.addEventListener){ 
 document.addEventListener('DOMMouseScroll',scrollFunc,false); 
 }//W3C 
 window.onmousewheel=document.onmousewheel=scrollFunc;//IE/Opera/Chrome/Safari 

</script>

9)字符串

①contains方法替代

js中没有contains()方法,可以用indexOf(“str”) != -1代替(表示找到了)。

10)对象

①Window对象

Window 对象表示浏览器中打开的窗口。
如果文档包含框架(frame 或 iframe 标签),浏览器会为 HTML 文档创建一个 window 对象,并为每个框架创建一个额外的 window 对象。
注释:没有应用于 window 对象的公开标准,不过所有浏览器都支持该对象。

②top命令

该变量指分割窗口(frameset或者iframe)最高层次的浏览器窗口。top指的是最外层的frameset。

top['location']['href'] = "http://abc"

等价于

top.location.href = "http://abc"
<iframe src="redirect.php"></iframe> 
<iframe src="https://www.google.com/images/srpr/logo11w.png"></iframe> 
<script> 
    top[0].eval('_=top[1];alert();_.location="javascript:alert(document.domain)"');  
</script> 
//top[0]为本身的html页。top[1]为第一个iframe ,以此类推。

③opener对象。

opener用于在window.open的页面引用执行该window.open方法的的页面的对象。例如:A页面通过window.open()方
法弹出了B页面,在B页面中就可以通过opener来引用A页面,这样就可以通过这个对象来对A页面进行操作。

④parent对象

parent用于在iframe,frame中生成的子页面中访问父页面的对象。例如:A页面中有一个iframe或frame,那么iframe
或frame中的页面就可以通过parent对象来引用A页面中的对象。这样就可以获取或返回值到A页面中。

⑤self

当前窗口。

⑥Frame对象

Frame 对象代表一个 HTML 框架。
在 HTML 文档中 frame标签 每出现一次,就会创建一个 Frame对象。

//<FRAME>必须在 <FRAMESET> 范围中使用

<frameset rows="33%,10%,*">  
      <frame src="http://www.baidu.com/.html" name="frame1" id="frame1" />  
      <frame src="http://www.baidu.com/.html" name="frame2" id="frame2" />  
      <frame src="http://www.baidu.com/.html" name="frame5" id="frame5" />  
</frameset>  

frameset 元素可定义一个框架集。它被用来组织多个窗口(框架)。

⑦Document对象

每个载入浏览器的 HTML 文档都会成为 Document 对象。
Document 对象使我们可以从脚本中对 HTML 页面中的所有元素进行访问。

demo

1)界面框架

①上中下分栏界面

点击下载frame.zip

2)列表ul li

①li点击

html:

<ul id="test">
    <li>Glen</li>
    <li>Tane</li>
    <li>John</li>
    <li>Ralph</li>
</ul>
window.onload = function(){
    var obj_lis = document.getElementById("test").getElementsByTagName("li");
    for(i=0;i<obj_lis.length;i++){
        obj_lis[i].onclick = function(){
            alert(this.innerHTML);
        }
    }
}

②li去掉标记圆点

<li style="list-style:none;">不显示圆点<li>

3)表格

①点击表头列排序

html:

            <table id="tableR"  class="tablesorter">
                <thead><!--表头-->
                    <th>序号</th>
                    <th>区县</label></th>
                    <th>时间</label></th>
                </thead>                
                <tbody id="tbody">
                </tbody>
            </table>

class=”tablesorter”是为了实现表格排序,使用:

<script type="text/javascript" src="js/jquery.js"></script> 
<script type="text/javascript" src="js/jquery.tablesorter.js"></script> 

//第一列不进行排序(索引从0开始) (JS添加)
$.tablesorter.defaults.headers = {0: {sorter: false}}; 
$(".tablesorter").tablesorter();

$(".tablesorter").trigger("update"); //JS中,表格刷新之后添加这句。

点击下载jquery.tablesorter.js

②表格CSS

border-collapse:collapse;//去掉表头的分割线
border-bottom: 1px solid #0F9D01;//最小设置为1px 

③小尺寸屏幕下table自动增加水平滚动

点击查看代码
需要注意的是:每个th增加属性:style="min-width:66px"

4)cookie

function setCookie(name, value, iDay) {
    var exp = new Date();
    exp.setTime(exp.getTime() + iDay * 24 * 60 * 60 * 1000);
    document.cookie = name + "=" + escape(value) + ";expires=" + exp.toGMTString() + ";path=/";;
};

function getCookie(name) {
    var arr = document.cookie.split('; '); //多个cookie值是以; 分隔的,用split把cookie分割开并赋值给数组
    for(var i = 0; i < arr[i].length; i++) //历遍数组
    {
        var arr2 = arr[i].split('='); //原来割好的数组是:user=simon,再用split('=')分割成:user simon 这样可以通过arr2[0] arr2[1]来分别获取user和simon 
        if(arr2[0] == name) //如果数组的属性名等于传进来的name
        {
            return unescape(arr2[1]); //就返回属性名对应的值
        }
    }
    return ''; //没找到就返回空
};

function removeCookie(name) {
    var exp = new Date();
    exp.setTime(exp.getTime() - 1);
    var cval = getCookie(name);
    if(cval != null)
        document.cookie = name + "=" + cval + ";expires=" + exp.toGMTString();
    //setCookie(name, 1, -1); //-1就是告诉系统已经过期,系统就会立刻去删除cookie
};

5)日期

①日期计算

//获取当前的日期时间 格式“yyyy-MM-ddHH:MM”
function getNowFormatDate() {
    var date = new Date();
    var seperator1 = "-";
    var seperator2 = ":";
    var month = date.getMonth() + 1;
    var strDate = date.getDate();
    var currentdate = date.getFullYear() + seperator1 + get2Bit(month) + seperator1 + get2Bit(strDate) +
        get2Bit(date.getHours()) + seperator2 + get2Bit(date.getMinutes());
    return currentdate;
}
//如果为1-9,返回01-09
function get2Bit(num) {

    if(num >= 0 && num <= 9) {
        num = "0" + num;
    }
    return num;
}
//获取参数日期时间的前beforeTime小时日期 格式“yyyy-MM-ddHH:MM”
function getBeforeFormatDate(beforeTime) {
    var date = new Date(new Date() - beforeTime * 60 * 60 * 1000); //取前一天的时间;
    var seperator1 = "-";
    var seperator2 = ":";
    var month = date.getMonth() + 1;
    var strDate = date.getDate();
    var currentdate = date.getFullYear() + seperator1 + get2Bit(month) + seperator1 + get2Bit(strDate) +
        get2Bit(date.getHours()) + seperator2 + get2Bit(date.getMinutes());
    return currentdate;
}
//将毫秒数转换为格式化时间 yyyy-MM-dd hh:mm:ss
function getFormatTime(time) {
    if(time.length == 0) {
        return "";
    }
    return new Date(parseInt(time)).Format("yyyy-MM-dd hh:mm:ss");
}
Date.prototype.Format = function(format) {

    var o = {
        "M+": this.getMonth() + 1, //month 
        "d+": this.getDate(), //day 
        "h+": this.getHours(), //hour 
        "m+": this.getMinutes(), //minute 
        "s+": this.getSeconds(), //second 
        "q+": Math.floor((this.getMonth() + 3) / 3), //quarter 
        "S": this.getMilliseconds() //millisecond 

    }
    if(/(y+)/.test(format)) {
        format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
    }
    for(var k in o) {
        if(new RegExp("(" + k + ")").test(format)) {
            format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
        }
    }
    return format;
}

//获取当天时间。year+"-"+month+"-"+day
function GetDateNow() {
    var dateNow = new Date();
    var year = dateNow.getFullYear();
    var month = (dateNow.getMonth() + 1) < 10 ? "0" + (dateNow.getMonth() + 1) : (dateNow.getMonth() + 1);
    var day = dateNow.getDate() < 10 ? "0" + (dateNow.getDate()) : dateNow.getDate();
    return year + "-" + month + "-" + day;
}

//获取当天30天后的时间。y+"-"+m+"-"+d
function GetDateStr(AddDayCount) {
    var dd = new Date();
    dd.setDate(dd.getDate() + AddDayCount); //获取AddDayCount天后的日期  
    var y = dd.getFullYear();
    var m = (dd.getMonth() + 1) < 10 ? "0" + (dd.getMonth() + 1) : (dd.getMonth() + 1); //获取当前月份的日期,不足10补0  
    var d = dd.getDate() < 10 ? "0" + dd.getDate() : dd.getDate(); //获取当前几号,不足10补0  
    return y + "-" + m + "-" + d;
}

②日期选择控件

6)页码分页算法

点击查看

7)一键下载文件脚本

用处:一个网页有167列表项,每一项中都有一个文件要下载并重命名。在控制台写如下代码(为了下载能重命名,可以用360极速浏览器实现)。

for(var i=1;i<167;i++){
$("#download_button"+i).click();
}
for(var i=1;i<167;i++){
var btn=document.createElement("a");
var t=document.createTextNode("CLICK ME");
btn.appendChild(t);
btn.setAttribute("id",'download_aaaw'+i);
btn.setAttribute('href',$('#download_button'+i).attr('href'))
document.body.appendChild(btn);
//$('#download_button'+i).click();
(function(i){ console.log(i);setTimeout((function(i){console.log(i);console.log($('#download_aaaw'+i).attr('href'));window.open($('#download_aaaw'+i).attr('href'))})(i),i*1000) })(i) 

}

手机网页开放

1)设置

<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no">

网页宽度默认等于屏幕宽度(width=device-width),
初始缩放比例(initial-scale=1)为1.0,即网页初始大小占屏幕面积的100%。
maximum-scale=1.0, minimum-scale=1.0;可视区域的缩放级别,
maximum-scale用户可将页面放大的程序,1.0将禁止用户放大到实际尺寸之上。
user-scalable:是否可对页面进行缩放,no 禁止缩放

2)其它

①Html文字只显示一行,隐藏多出来的文字:

    /*一行表示**/
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;

猜你喜欢

转载自blog.csdn.net/sunshinetan/article/details/60584185