端功能問題系列文章,點擊上方合集↑
序言
大家好,我是大澈!
本文約1400+字,整篇閱讀大約需要3分鐘。
本文主要內容分三部分,第一部分是需求分析,第二部分是實現步驟,第三部分是問題詳解。
如果您只需要解決問題,請閱讀第一、二部分即可。
如果您有更多時間,進一步學習問題相關知識點,請閱讀至第三部分。
1. 需求分析
使用el-tree組件,渲染樹狀數據。
要求默認全部展開、不顯示復選框、支持單選、以及點擊父級節點時不折疊子節點。
當然,還有個小細節就是,點擊當前節點要高亮顯示。
用過el-tree組件的朋友,肯定清楚,el-tree默認只支持多選。而且,除了支持單選,其它需求都可以使用現成的配置屬性來實現。
那么問題來了,如何實現單選呢?
2. 實現步驟
模版代碼:
<template>
<!-- 樹 -->
<el-tree
style="min-width: 230px"
v-loading="treeDataListLoading"
class="treeStyle"
:check-on-click-node="true"
:highlight-current="true"
:default-expand-all="true"
:data="treeData"
:props="treeDefaultProps"
node-key="id"
:show-checkbox="false"
:check-strictly="true"
@check="handleTreeNodeClick"
ref="selectTree"
:expand-on-click-node="false"
/>
</template>
邏輯代碼:
<script setup>
// 樹數據
const treeData = reactive([])
// 樹配置項
const treeDefaultProps = {
children: "children",
label: "permissionName"
};
// 樹ref
const selectTree = ref();
// 樹節點選中事件
const handleTreeNodeClick = (data, checkObj) => {
// 共兩個參數,依次為:傳遞給 data 屬性的數組中該節點所對應的對象、樹目前的選中狀態對象
// 樹目前的選中狀態對象,包含 checkedNodes、checkedKeys、halfCheckedNodes、halfCheckedKeys 四個屬性
if (checkObj.checkedKeys.length != 0) {
if (checkObj.checkedKeys.length == 2) {
// 如果選擇超過一個節點,則只保留最后一個節點
//單選實現
selectTree.value.setCheckedKeys([data.id]);
}
}
};
</script>
對這些配置屬性特別了解的朋友,就當復習一遍了。
先配置node-key屬性,每個樹節點的唯一標識,必須設置。
然后設置check-strictly屬性,父子節點選中是否不關聯。默認是false,設置為true時為父子節點選中不關聯。
再獲取一個el-tree樹的ref實例,用來對組件進行操作。
再設置@check事件,在選中節點之后觸發的回調。此處注意區分使用@check-change事件,兩者的回調參數是不同的。@check事件共兩個參數,依次為:傳遞給 data 屬性的數組中該節點所對應的數據對象、樹目前的選中狀態對象。其中,樹目前的選中狀態對象,包含 checkedNodes、checkedKeys、halfCheckedNodes、halfCheckedKeys 四個屬性。
最后在@check事件回調中,判斷一下參數樹選中狀態對象checkObj的長度。如果選擇超過一個節點,則通過樹ref實例的setCheckedKeys方法,將參數樹選中數據對象data的id,每一次都覆蓋上一次選中的id,然后以數字形式傳到setCheckedKeys方法中,如此實現只保留最后一個節點。
使用了default-expand-all屬性。
設置為true展開全部節點,設置為false不展開全部節點。默認是false不展開。
使用了show-checkbox屬性 + check-on-click-node屬性。
show-checkbox屬性,設置為true顯示復選框,設置為false不顯示復選框。默認是false不顯示。
check-on-click-node屬性,是否在點擊節點的時候選中節點。默認值為 false,即只有在點擊復選框時才會選中節點。
使用了expand-on-click-node屬性。
是否在點擊節點的時候展開或者收縮節點。 默認值為 true,如果為 false,則只有點箭頭圖標的時候才會展開或者收縮節點。
點擊當前節點要高亮顯示:
是否高亮當前選中節點。默認值是 false,如果為true,則點擊當前節點時高亮顯示。
3. 問題詳解
為了朋友們閱讀到此處時,方便查閱官方文檔學習。
最后附上,el-tree組件Element官方文檔地址:https://element-plus.org/zh-CN/component/tree.html#%E5%B1%9E%E6%80%A7。
結語
建立這個平臺的初衷:
感謝關注微信公眾號:“程序員大澈”,然后加入問答群,讓我們一起解決實現所有BUG!
本文,有很多很棘手的問題,例如使用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°
解析HTML文檔,可以使用一些編程語言中的HTML解析庫或工具。以下是一些常用的方法:
from bs4 import BeautifulSoup
# 讀取HTML文檔
with open('example.html', 'r') as file:
html = file.read()
# 創建BeautifulSoup對象
soup = BeautifulSoup(html, 'html.parser')
# 使用BeautifulSoup對象提取數據
# 例如,提取所有的鏈接
links = soup.find_all('a')
for link in links:
print(link.get('href'))
// 讀取HTML文檔
var html = document.documentElement.innerHTML;
// 使用DOM解析器提取數據
// 例如,提取所有的鏈接
var links = document.getElementsByTagName('a');
for (var i = 0; i < links.length; i++) {
console.log(links[i].getAttribute('href'));
}
無論你選擇哪種方法,解析HTML文檔的關鍵是了解HTML的結構和標簽,并使用相應的解析器或工具來提取所需的數據。
當你解析HTML文檔時,你可能會遇到以下一些常見的任務和技術:
總的來說,解析HTML文檔需要一定的HTML知識和編程技巧。你需要了解HTML的結構和標簽,選擇合適的解析器或工具,使用選擇器來定位元素,提取所需的數據,并處理特殊情況。通過不斷練習和實踐,你將能夠更熟練地解析HTML文檔并提取所需的數據。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。