天南地北大拜年# 一起領紅包>根據您提供的代碼,這是一個使用 jQuery 來實現網頁導航欄動態位置調整、滾動到特定內容區域時高亮導航項,以及用戶留言和評價功能的網頁。下面是對這些功能的報告:
### 1. 導航欄位置調整
- **功能描述**: 導航欄的位置會根據瀏覽器窗口的大小動態調整,以確保它在視覺上居中顯示。
- **實現方法**: 使用 jQuery 監聽 `resize` 事件,實時計算導航欄的寬度,并動態設置其 `right` CSS屬性。
### 2. 滾動導航高亮
- **功能描述**: 當用戶滾動到網頁的某個特定內容區域時,對應的導航項會被高亮顯示。
- **實現方法**: 首先,獲取每個內容區域的位置頂部值并存入數組。然后,監聽 `scroll` 事件,根據滾動位置判斷當前處于哪個內容區域,并使用 `.addClass("selected")` 來高亮當前導航項。
### 3. 用戶留言功能
- **功能描述**: 用戶可以在網頁上留下自己的意見或建議。
- **實現方法**: 使用 HTML 的 `` 元素創建一個多行文本輸入框,并通過 jQuery 監聽按鈕點擊事件來處理留言的提交。
### 4. 星級評價功能
- **功能描述**: 用戶可以通過點擊星星圖標來對網頁進行評價。
- **實現方法**: HTML 使用 `` 元素創建星星圖標,并通過 jQuery 來監聽點擊事件,根據點擊的星星圖標更新頁面上的評級顯示。
### 5. 功能完善建議
- **用戶體驗**: 增加留言提交后的反饋機制,如提示用戶留言成功或出現錯誤。
- **交互設計**: 對于星級評價,可以增加更多的交互效果,如星星點擊效果,以及評價后的結果展示。
- **響應式設計**: 確保網頁在不同設備上均有良好的顯示效果,包括手機和平板電腦。
- **性能優化**: 對于 `scroll` 和 `resize` 事件,應考慮節流(throttle)或防抖(debounce)技術,以避免過度事件處理導致的性能問題。
### 6. 錯誤和警告
- **代碼錯誤**: 在您的代碼中,有幾個問題需要解決。比如,變量 `sectionHeightArray` 應該在 `$(window).scroll` 事件處理函數外部聲明,否則它可能無法正確引用。此外,按鈕點擊事件處理函數沒有提供,需要補充相應的代碼來處理用戶的交互。
- **跨瀏覽器兼容性**: 需要確保所有的 jQuery 代碼在不同的瀏覽器上都能正常工作,特別是舊版本的瀏覽器。
### 7. 安全性
- **XSS防范**: 確保從用戶那里收集的數據在插入到網頁上之前進行了適當的清理,以防止跨站腳本(XSS)攻擊。
整體而言,該網頁的交互功能對于用戶參與和反饋提供了良好的基礎,但在發布前需要進行詳細的測試和優化以確保最佳的用戶體驗和性能。類圖(15分):
主題:智能家居控制系統
描述:為一個智能家居控制系統繪制組件圖,展示系統中各個組件如用戶界面、數據存儲、設備控制等的關系
本文,有很多很棘手的問題,例如使用sublime 編輯器可能安裝插件的時候會使用不了view in browser我公司的電腦可以安裝、結果家里的電腦就報編碼錯誤、需要改sublime插件源代碼解碼成utf8就可以了、還有一直連不上packagecontrol的網頁,可以群(526929231)使勁砸我得到解決~ sublime編輯器對于前端來說確實很好用!很好用!很好用! SublimeText、Webstorm推薦這兩個編輯器
剛開始設計HTML語言是為了將文字圖像關聯在一起,用另一臺發送或接收
HTML 不是一種編程語言,而是一中標記語言(mark-up language),標記語言是一套標記標簽(mark-up tag)
標簽是由尖括號 < > 把關鍵詞括起來,標簽通常是成對出現的
讀取 HTML 文檔,使用標簽來解析頁面的內容,以網頁的形式現實,瀏覽器不會現實HTML標簽
每種瀏覽器都有自己的內核(引擎)(解析網頁的一個程序,io以什么方式去渲染它都要通過引擎去執行)
目前主流的瀏覽器分為五種
Chrome谷歌瀏覽器 (Webkit內核,V8 js引擎)
Firefox火狐瀏覽器 (Gecko內核)
Internet Explorer IE瀏覽器( Trident內核)
Opera 歐朋瀏覽器 (Presto內核) 主要市場:移動端
Safari 蘋果瀏覽器 (Webkit內核,但JS引擎為Nitro)
不需要去記,簡單了解下
標簽必須閉合
所有標簽名一律小寫
代碼縮進,使閱讀代碼更加易懂
特殊符號規范使用
命名規范,見名之意
PS: 所有的標記符號都是半角英文
眾說紛紜編輯器太多,最終只是一個工具,希望同學們能從萬千世界中找到適合自己的編輯器伙伴
編輯器 | 描述 |
---|---|
EditPlus | 手寫模式,適合初學手寫,無代碼提示(有IE調試視圖) |
Sublime | 插件特別多,占用內存小,啟動速度快,打開大項目較慢,管理文件方式有些缺陷 |
webstorm | 集成插件特別多,啟動較慢,占用內存大,開發和管理視圖都很方便 |
Dreamweaver | 適合初學,主要代碼提示和代碼插入功能強大,主要偏向于設計(有設計視圖) |
插件名 | 描述 | 詳情請戳 |
---|---|---|
emmet | 前端自動補全,提供快捷補全方式 | |
ColorPicker | 調色板,顏色選擇器 | |
SublimeTmpl | sublime模板,可以快速創建一個HTML模板 | |
view in browser | 用快捷方式打開瀏覽器進行調試HTML(需要配置參考后面網頁) | |
LiveReload | 實時刷新HTML(編輯器里按下保存ctrl+s的時候,已經打開的HTMl會自動刷新) | 谷歌插件文件安裝方法需要配合谷歌LiveReload插件插件文件下載 |
Color Highlighter | CSS顏色代碼高亮及顏色預覽提示 | |
CSS3 | CSS3的代碼高亮提示 | 還針對了CSS3的選擇器及錨類選擇器:hover :first-child :first-child ... 的高亮 |
JavaScript Completions | 原生js 代碼提示 | |
Sublime-Better-Completion | 可自選開啟代碼提示,支持jQ、js、bootstrap、php、sql ... | 倉庫地址此插件只能通過Github克隆下載安裝安裝方法 |
注:Github 網頁中 下面是有詳細的使用方法 packagecontrol.io官網 里面search 可以進行搜索插件名字來找到具體使用方法,還有什么不懂或者安裝出現編碼錯誤以及安裝不上的可以拍打我~
配置 | 描述 |
---|---|
!DOCTYPE html | 不是標簽,主要用于文檔類型的聲明 |
charset="utf-8" | 聲明字符編碼集 |
http-equiv="Content-Type" | 把Content屬性關聯到HTTP頭部(協議頭) |
HTML模板
簡單了解,并不需要熟練掌握
Dom節點樹
.html .htm這兩種是比較常見的
在早期系統中文件名是有8+3組成 三個擴展名所以不支持四個字母的擴展采用.htm
現在通常使用.html作為擴展名
接下來所有的標簽元素學習都在body標簽里面去敲打實現、
為了突出標題,字體大小和加粗發生相應的改變
<h1>我是大主題</h1> <h2>我是大主題</h2> <h3>我是大主題</h3> <h4>我是大主題</h4> <h5>我是大主題</h5> <h6>我是大主題</h6>
<!doctype html><!-- 讓瀏覽器使用html5的標準解析 --> <html> <head> <!-- 設置字符編碼集讓瀏覽器使用utf8解析當前網頁 --> <meta http-equiv="Content-Type" content="text/html; charset=utf8" /> <meta name="keywords" content="SEO搜索引擎,關鍵詞,多個請用逗號分開" /> <meta name="description" content="網頁描述,八十字內" /> <title>瀏覽器標簽頁上的網頁標題</title> </head> <body> <!-- 所有的標簽學習都在這body里面去敲,上面head元素里面的內容做個了解就可以了 --> <h1>我是大標題</h1> <h2>我是主題2</h2> <h3>我是主題3</h3> <h4>我是主題4</h4> <h5>我是主題5</h5> <h6>我是主題6</h6> </body> </html>
可以發現h標簽從h1到h6會隨著數值越小字越小,并且都是會加粗和各占一行的狀態(前后的元素都會被換行)
h1標簽一般一個頁面里面只會寫一次,為了讓搜索引擎爬取到 (寫一次利于SEO搜索引擎優化)
<p> 冬著一身素衣,緩緩而來,季節沒有了往日的姹紫嫣紅,卻用簡單的線條,勾勒出一幅潔白的畫,純潔通透,輕盈自然。 </p>
剛我們了解到了瀏覽器是識別尖括號的,如果要在頁面中顯示html標記那要怎么做呢?這時候就需要特殊符號的表示來顯示
符號 | 描述 |
---|---|
空格 | |
小于 | < |
大于 | > |
引號 | " |
版權 | © |
×叉 | × |
& | & |
符號 | 描述 |
---|---|
B標簽 | 物理加粗,頁面呈現加粗狀態. |
Strong標簽 | 不僅能加粗,還利于搜索引擎優化 |
<b>物理加粗,頁面呈現加粗狀態.</b> <strong>不僅能加粗,還利于搜索引擎優化,就是類似于百度、谷歌這種搜索引擎爬取你的網頁的時候會查找這個標簽里面的內容來優化顯示網頁的排名</strong>
可以根據word文檔上面發現 b是加粗 u是下劃線 i是傾斜 同樣適用于標簽
<i>我是傾斜</i> <u>我加了下劃線</u>
鏈接一個頁面,點擊則會跳轉這個鏈接頁面
使用錨點滾動到設定的位置
<a href=""></a> a標簽中的href控制點擊的時候跳轉到哪里如果沒寫表示刷新當前頁面 <a href="#"></a> 跳轉到當前頁面(回歸到頁面頂部) <a href="javascript: void(0);"></a> 死鏈接,不會跳轉,一般用于js特效 <a href="#name">錨點到一個標簽上所對應的ID名字,點擊則跳到那個標簽位置</a> <a >跳轉到百度</a> 跳轉到百度 需要注意的是 http 協議不能少
點擊#flag的a標簽的時候會跳到到上面h2標簽
只有擁有name屬性的
a標簽
才能錨點,還有一種方式是通過ID標識唯一元素,也可以跳轉(不僅僅是a標簽)
描述 | 標簽 |
---|---|
滾動標簽 | marquee |
字體標簽 | font |
定義水平線 | hr |
marquee
屬性 | 描述 |
---|---|
direction | 滾動方向 |
behivior | 行為 |
behivior
值 | 描述 |
---|---|
alternate | 交替滾動 |
scroll | 滾動 |
slide | 滑落 |
屬性 | 描述 |
---|---|
color | 顏色 |
size | 0-7 |
face | 字體 |
與font相似,擁有color和size屬性
hr標簽沒有結束標簽 按照早期的習慣也H5也遵循XHTML的解析 所以統一會加一個反斜杠表示結束這個標簽,不加也能夠正確顯示,但是養成一個良好的習慣確實重要,比如微信小程序就是沒有結束標簽必須要使用一個反斜杠結尾否則直接報錯、
結合今天所學,寫一個簡單的網頁
內容如下:
寫一篇收獲或感受 / 寫一篇文章 ————> 為什么要自己寫,網上一大把哈哈,可以自己寫下,鍛煉下思維
需要包括h、p、a、加粗
題材不限,至少200字
在習題一的文章底部,使用滾動標簽進行滾動方向為45°
例1: 自動播放功能
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<title>網頁標題</title>
<meta name="keywords" content="關鍵字列表" />
<meta name="description" content="網頁描述" />
<link rel="stylesheet" type="text/css" href="" />
<style type="text/css">
*{margin:0;padding:0;}
body{color:#333;font-size:12px;line-height:20px;}
ul,li{list-style:none;}
#content{margin:0 auto;width:540px;}
#content .scroll_top{width:540px;height:51px;background:url(images/dd_scroll_top.gif) no-repeat;}
#content .scroll_mid{
width:533px;
padding:5px 0 5px 5px;
border-left:1px solid #d6d5d6;
border-right:1px solid #d6d5d6;
background:#f2f2f3;
}
#scroll_number{
float:right;
padding-right:10px;
}
#scroll_number li{
margin-top:5px;
width:13px;
height:13px;
line-height:16px;
border:1px solid #999;
cursor:pointer;
text-align:center;
}
#content .scroll_end{
width:540px;
height:8px;
background:url(images/dd_scroll_end.gif) no-repeat;
margin-bottom:10px;
}
.scroll_number_out{
}
.scroll_number_over{
background-color:#F96;
color:#FFF;
}
</style>
<script type="text/javascript">
//分析思路
//1.當頁面加載完成后 使用定時器
//2.需要有一個定時器功能函數 這個函數的主要功能是實現圖片輪播
//3.當鼠標經過圖片上時 清除定時器
//4.當鼠標離開圖片上時 重新調用定時器
//5.把鼠標放在li標簽上面 要顯示li標簽上數字對應的圖片 清除定時器
//6.當鼠標離開li標簽時 圖片繼續滾動 重新調用定時器
//7.li標簽要隨著圖片滾動而滾動 并且對應的li標簽要高亮
//1.當頁面加載完成時
var img_obj = null;
var timer;
var lis_obj = null; //用來保存li
window.onload = function(){
//先將所有的li上面的class清空
//需要獲取到id="dd_scroll"對象
img_obj = document.getElementById("dd_scroll");
//實現定時器
timer = setInterval("scroll_img()",1000);
//通過id="scroll_number"來獲取對象
lis_obj = document.getElementById("scroll_number").getElementsByTagName("li");
}
//主要是用于實現圖片輪播
var i = 2;
function scroll_img(){
//先將所有的li標簽的class都清空
for(var j=0;j<lis_obj.length;j++){
lis_obj[j].className = "";
}
lis_obj[i-1].className = "scroll_number_over";
//需要改變img標簽的src屬性
img_obj.src = "images/dd_scroll_"+i+".jpg";
i++;
//判斷i的值
if(i>6){
i = 1;
}
}
//鼠標經過 清除定時器
function stopScroll(ind){
if(ind){
i = ind; //把值賦值給i
scroll_img(); //重新調用圖片輪播函數
}
clearInterval(timer);
}
//鼠標離開時 重新調用定時器
function goon(){
timer = setInterval("scroll_img()",1000);
}
</script>
</head>
<body>
<div id="content">
<!--輪換顯示的橫幅廣告圖片-->
<div class="scroll_top"></div>
<div class="scroll_mid"> <img src="images/dd_scroll_1.jpg" alt="輪換顯示的圖片廣告" id="dd_scroll" onmouseover="stopScroll()" onmouseout="goon()"/>
<div id="scroll_number">
<ul>
<li id="scroll_number_1" onmouseover="stopScroll(1)" class="scroll_number_over" onmouseout="goon()">1</li>
<li id="scroll_number_2" onmouseover="stopScroll(2)" onmouseout="goon()">2</li>
<li id="scroll_number_3" onmouseover="stopScroll(3)" onmouseout="goon()">3</li>
<li id="scroll_number_4" onmouseover="stopScroll(4)" onmouseout="goon()">4</li>
<li id="scroll_number_5" onmouseover="stopScroll(5)" onmouseout="goon()">5</li>
<li id="scroll_number_6" onmouseover="stopScroll(6)" onmouseout="goon()">6</li>
</ul>
</div>
</div>
<div class="scroll_end"></div>
</div>
</body>
</html>
圖片規格:500px 180px 共六張圖片
實例2: 鼠標點擊功能
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
*{
margin: 0;
padding: 0;
list-style: none;
}
div{
width: 665px;
height: 442px;
margin: 0 auto;
border: 5px solid gray;
position: relative;
}
/*5張圖片的樣式*/
ul,ul>li{
width: 665px;
height: 442px;
position: absolute;
}
ul>li{
display: none;
}
ul>li.active{
display: block;
}
/*5個點點點的樣式*/
ol{
width: 150px;
height: 30px;
position: absolute;
left: 50%;
margin-left: -75px;
bottom: 20px;
}
ol>li{
width: 16px;
height: 16px;
margin: 7px;
float: left;
cursor: pointer;
border-radius: 50%;
background-color: rgba(255,255,255,0.5);
}
ol>li.active{
background-color: rgba(255,255,255,1);
}
div>a{
color: #999;
width: 30px;
height: 62px;
font-size: 24px;
text-align: center;
line-height: 62px;
text-decoration: none;
background-color: rgba(255,255,255,0.5);
position: absolute;
top: 190px;
}
div>a.prev{
left: 0;
}
div>a.next{
right: 0;
}
</style>
</head>
<body>
<div>
<!--5張圖-->
<ul>
<li class="active"><a href=""><img src="img/1.jpeg"/></a></li>
<li><a href=""><img src="img/2.jpeg"/></a></li>
<li><a href=""><img src="img/3.jpeg"/></a></li>
<li><a href=""><img src="img/4.jpeg"/></a></li>
<li><a href=""><img src="img/5.jpeg"/></a></li>
</ul>
<!--5個點點點-->
<ol>
<li class="active"></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ol>
<!--左右箭頭-->
<a class="prev" href="javascript:;"><</a>
<a class="next" href="javascript:;">></a>
</div>
<script type="text/javascript">
//獲取左右箭頭
var prev = document.getElementsByClassName("prev")[0];
var next = document.getElementsByClassName("next")[0];
//獲取5個點點點
var ol_lis = document.getElementsByTagName("ol")[0].getElementsByTagName("li");
//獲取5張圖
var ul_lis = document.getElementsByTagName("ul")[0].getElementsByTagName("li");
var num = 0;
//下一張
next.onclick = function(){
num++;
if(num===ul_lis.length){
num = 0;
}
for(var i=0;i<ul_lis.length;i++){
ul_lis[i].className = "";//當我點擊下一張是先把所有的圖片隱藏
ol_lis[i].className = "";//當我點擊下一張是先把所有的圖片隱藏
}
ul_lis[num].className = "active";
ol_lis[num].className = "active";
}
//上一張
prev.onclick = function(){
num--;
if(num===-1){
num = ul_lis.length-1;
}
for(var j=0;j<ul_lis.length;j++){
ul_lis[j].className = "";//當我點擊下一張是先把所有的圖片隱藏
ol_lis[j].className = "";//當我點擊下一張是先把所有的圖片隱藏
}
ul_lis[num].className = "active";
ol_lis[num].className = "active";
}
//點點點
for(var k=0;k<ol_lis.length;k++){
//什么時候需要用索引 2個及其以上事物相關聯的
ol_lis[k].index = k;//我給每一個點點點加一個自定義屬性
ol_lis[k].onclick = function(){
for(var q=0;q<ol_lis.length;q++){
ol_lis[q].className = "";
ul_lis[q].className = "";
}
this.className = "active";
ul_lis[this.index].className = "active";
//此時左右按鈕和點點點是兩條路 我們需要讓他們執行同樣的規則
//所以num = 當前被點擊的li的自定義屬性
num = this.index;
}
}
</script>
</body>
</html>
圖片規格:665px 442px 共六張圖片
*請認真填寫需求信息,我們會在24小時內與您取得聯系。