整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          day13:前端面試題(基礎(chǔ))

          瀏覽器是怎么對(duì)HTML5的離線儲(chǔ)存資源進(jìn)行管理和加載的呢

          • 在線的情況下,瀏覽器發(fā)現(xiàn)html頭部有manifest屬性,它會(huì)請(qǐng)求manifest文件,如果是第一次訪問app,那么瀏覽器就會(huì)根據(jù)manifest文件的內(nèi)容下載相應(yīng)的資源并且進(jìn)行離線存儲(chǔ)。如果已經(jīng)訪問過app并且資源已經(jīng)離線存儲(chǔ)了,那么瀏覽器就會(huì)使用離線的資源加載頁面,然后瀏覽器會(huì)對(duì)比新的manifest文件與舊的manifest文件,如果文件沒有發(fā)生改變,就不做任何操作,如果文件改變了,那么就會(huì)重新下載文件中的資源并進(jìn)行離線存儲(chǔ)。
          • 離線的情況下,瀏覽器就直接使用離線存儲(chǔ)的資源。

          2 請(qǐng)描述一下 cookies,sessionStorage 和 localStorage 的區(qū)別?

          • cookie是網(wǎng)站為了標(biāo)示用戶身份而儲(chǔ)存在用戶本地終端(Client Side)上的數(shù)據(jù)(通常經(jīng)過加密)
          • cookie數(shù)據(jù)始終在同源的http請(qǐng)求中攜帶(即使不需要),記會(huì)在瀏覽器和服務(wù)器間來回傳遞
          • sessionStoragelocalStorage不會(huì)自動(dòng)把數(shù)據(jù)發(fā)給服務(wù)器,僅在本地保存
          • 存儲(chǔ)大小:cookie數(shù)據(jù)大小不能超過4ksessionStoragelocalStorage雖然也有存儲(chǔ)大小的限制,但比cookie大得多,可以達(dá)到5M或更大
          • 有期時(shí)間:localStorage 存儲(chǔ)持久數(shù)據(jù),瀏覽器關(guān)閉后數(shù)據(jù)不丟失除非主動(dòng)刪除數(shù)據(jù)sessionStorage 數(shù)據(jù)在當(dāng)前瀏覽器窗口關(guān)閉后自動(dòng)刪除cookie 設(shè)置的cookie過期時(shí)間之前一直有效,即使窗口或?yàn)g覽器關(guān)閉

          3 iframe有那些缺點(diǎn)?

          • iframe會(huì)阻塞主頁面的Onload事件
          • 搜索引擎的檢索程序無法解讀這種頁面,不利于SEO
          • iframe和主頁面共享連接池,而瀏覽器對(duì)相同域的連接有限制,所以會(huì)影響頁面的并行加載
          • 使用iframe之前需要考慮這兩個(gè)缺點(diǎn)。如果需要使用iframe,最好是通過javascript動(dòng)態(tài)給iframe添加src屬性值,這樣可以繞開以上兩個(gè)問題

          4 WEB標(biāo)準(zhǔn)以及W3C標(biāo)準(zhǔn)是什么?

          • 標(biāo)簽閉合、標(biāo)簽小寫、不亂嵌套、使用外鏈cssjs、結(jié)構(gòu)行為表現(xiàn)的分離

          5 xhtml和html有什么區(qū)別?

          • 一個(gè)是功能上的差別主要是XHTML可兼容各大瀏覽器、手機(jī)以及PDA,并且瀏覽器也能快速正確地編譯網(wǎng)頁
          • 另外是書寫習(xí)慣的差別XHTML 元素必須被正確地嵌套,閉合,區(qū)分大小寫,文檔必須擁有根元素

          6 Doctype作用? 嚴(yán)格模式與混雜模式如何區(qū)分?它們有何意義?

          • 頁面被加載的時(shí),link會(huì)同時(shí)被加載,而@imort頁面被加載的時(shí),link會(huì)同時(shí)被加載,而@import引用的CSS會(huì)等到頁面被加載完再加載 import只在IE5以上才能識(shí)別,而linkXHTML標(biāo)簽,無兼容問題 link方式的樣式的權(quán)重 高于@import的權(quán)重
          • <!DOCTYPE> 聲明位于文檔中的最前面,處于 <html> 標(biāo)簽之前。告知瀏覽器的解析器, 用什么文檔類型 規(guī)范來解析這個(gè)文檔
          • 嚴(yán)格模式的排版和 JS 運(yùn)作模式是 以該瀏覽器支持的最高標(biāo)準(zhǔn)運(yùn)行
          • 在混雜模式中,頁面以寬松的向后兼容的方式顯示。模擬老式瀏覽器的行為以防止站點(diǎn)無法工作。 DOCTYPE不存在或格式不正確會(huì)導(dǎo)致文檔以混雜模式呈現(xiàn)

          7 行內(nèi)元素有哪些?塊級(jí)元素有哪些? 空(void)元素有那些?行內(nèi)元素和塊級(jí)元素有什么區(qū)別?

          • 行內(nèi)元素有:a b span img input select strong
          • 塊級(jí)元素有:div ul ol li dl dt dd h1 h2 h3 h4… p
          • 空元素:<br> <hr> <img> <input> <link> <meta>
          • 行內(nèi)元素不可以設(shè)置寬高,不獨(dú)占一行
          • 塊級(jí)元素可以設(shè)置寬高,獨(dú)占一行

          8 HTML全局屬性(global attribute)有哪些

          • class:為元素設(shè)置類標(biāo)識(shí)
          • data-*: 為元素增加自定義屬性
          • draggable: 設(shè)置元素是否可拖拽
          • id: 元素id,文檔內(nèi)唯一
          • lang: 元素內(nèi)容的的語言
          • style: 行內(nèi)css樣式
          • title: 元素相關(guān)的建議信息

          9 Canvas和SVG有什么區(qū)別?

          • svg繪制出來的每一個(gè)圖形的元素都是獨(dú)立的DOM節(jié)點(diǎn),能夠方便的綁定事件或用來修改。canvas輸出的是一整幅畫布
          • svg輸出的圖形是矢量圖形,后期可以修改參數(shù)來自由放大縮小,不會(huì)失真和鋸齒。而canvas輸出標(biāo)量畫布,就像一張圖片一樣,放大會(huì)失真或者鋸齒

          10 HTML5 為什么只需要寫 <!DOCTYPE HTML>

          • HTML5 不基于 SGML,因此不需要對(duì)DTD進(jìn)行引用,但是需要doctype來規(guī)范瀏覽器的行為
          • HTML4.01基于SGML,所以需要對(duì)DTD進(jìn)行引用,才能告知瀏覽器文檔所使用的文檔類型

          11 HTML5 為什么只需要寫 <!DOCTYPE HTML>

          • HTML5 不基于 SGML,因此不需要對(duì)DTD進(jìn)行引用,但是需要doctype來規(guī)范瀏覽器的行為
          • HTML4.01基于SGML,所以需要對(duì)DTD進(jìn)行引用,才能告知瀏覽器文檔所使用的文檔類型

          12 如何在頁面上實(shí)現(xiàn)一個(gè)圓形的可點(diǎn)擊區(qū)域?

          • svg
          • border-radius
          • js實(shí)現(xiàn) 需要求一個(gè)點(diǎn)在不在圓上簡(jiǎn)單算法、獲取鼠標(biāo)坐標(biāo)等等

          13 網(wǎng)頁驗(yàn)證碼是干嘛的,是為了解決什么安全問題

          • 區(qū)分用戶是計(jì)算機(jī)還是人的公共全自動(dòng)程序。可以防止惡意破解密碼、刷票、論壇灌水
          • 有效防止黑客對(duì)某一個(gè)特定注冊(cè)用戶用特定程序暴力破解方式進(jìn)行不斷的登陸嘗試

          14 viewport

           <meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
              // width    設(shè)置viewport寬度,為一個(gè)正整數(shù),或字符串‘device-width’
              // device-width  設(shè)備寬度
              // height   設(shè)置viewport高度,一般設(shè)置了寬度,會(huì)自動(dòng)解析出高度,可以不用設(shè)置
              // initial-scale    默認(rèn)縮放比例(初始縮放比例),為一個(gè)數(shù)字,可以帶小數(shù)
              // minimum-scale    允許用戶最小縮放比例,為一個(gè)數(shù)字,可以帶小數(shù)
              // maximum-scale    允許用戶最大縮放比例,為一個(gè)數(shù)字,可以帶小數(shù)
              // user-scalable    是否允許手動(dòng)縮放
          
          • 延伸提問怎樣處理 移動(dòng)端 1px 被 渲染成 2px問題

          局部處理

          • meta標(biāo)簽中的 viewport屬性 ,initial-scale 設(shè)置為 1
          • rem按照設(shè)計(jì)稿標(biāo)準(zhǔn)走,外加利用transfromescale(0.5) 縮小一倍即可;

          全局處理

          • mate標(biāo)簽中的 viewport屬性 ,initial-scale 設(shè)置為 0.5
          • rem 按照設(shè)計(jì)稿標(biāo)準(zhǔn)走即可

          15 渲染優(yōu)化

          • 禁止使用iframe(阻塞父文檔onload事件)iframe會(huì)阻塞主頁面的Onload事件搜索引擎的檢索程序無法解讀這種頁面,不利于SEOiframe和主頁面共享連接池,而瀏覽器對(duì)相同域的連接有限制,所以會(huì)影響頁面的并行加載使用iframe之前需要考慮這兩個(gè)缺點(diǎn)。如果需要使用iframe,最好是通過javascript動(dòng)態(tài)給iframe添加src屬性值,這樣可以繞開以上兩個(gè)問題
          • 禁止使用gif圖片實(shí)現(xiàn)loading效果(降低CPU消耗,提升渲染性能)
          • 使用CSS3代碼代替JS動(dòng)畫(盡可能避免重繪重排以及回流)
          • 對(duì)于一些小圖標(biāo),可以使用base64位編碼,以減少網(wǎng)絡(luò)請(qǐng)求。但不建議大圖使用,比較耗費(fèi)CPU小圖標(biāo)優(yōu)勢(shì)在于減少HTTP請(qǐng)求避免文件跨域修改及時(shí)生效
          • 頁面頭部的<style></style> <script></script> 會(huì)阻塞頁面;(因?yàn)?Renderer進(jìn)程中 JS線程和渲染線程是互斥的)
          • 頁面中空的 hrefsrc 會(huì)阻塞頁面其他資源的加載 (阻塞下載進(jìn)程)
          • 網(wǎng)頁gzipCDN托管,data緩存 ,圖片服務(wù)器
          • 前端模板 JS+數(shù)據(jù),減少由于HTML標(biāo)簽導(dǎo)致的帶寬浪費(fèi),前端用變量保存AJAX請(qǐng)求結(jié)果,每次操作本地變量,不用請(qǐng)求,減少請(qǐng)求次數(shù)
          • innerHTML代替DOM操作,減少DOM操作次數(shù),優(yōu)化javascript性能
          • 當(dāng)需要設(shè)置的樣式很多時(shí)設(shè)置className而不是直接操作style
          • 少用全局變量、緩存DOM節(jié)點(diǎn)查找的結(jié)果。減少IO讀取操作
          • 圖片預(yù)加載,將樣式表放在頂部,將腳本放在底部 加上時(shí)間戳
          • 對(duì)普通的網(wǎng)站有一個(gè)統(tǒng)一的思路,就是盡量向前端優(yōu)化、減少數(shù)據(jù)庫(kù)操作、減少磁盤IO

          16 meta viewport相關(guān)

          <!DOCTYPE html>  <!--H5標(biāo)準(zhǔn)聲明,使用 HTML5 doctype,不區(qū)分大小寫-->
          <head lang=”en”> <!--標(biāo)準(zhǔn)的 lang 屬性寫法-->
          <meta charset=’utf-8′>    <!--聲明文檔使用的字符編碼-->
          <meta http-equiv=”X-UA-Compatible” content=”IE=edge,chrome=1″/>   <!--優(yōu)先使用 IE 最新版本和 Chrome-->
          <meta name=”description” content=”不超過150個(gè)字符”/>       <!--頁面描述-->
          <meta name=”keywords” content=””/>     <!-- 頁面關(guān)鍵詞-->
          <meta name=”author” content=”name, email@gmail.com”/>    <!--網(wǎng)頁作者-->
          <meta name=”robots” content=”index,follow”/>      <!--搜索引擎抓取-->
          <meta name=”viewport” content=”initial-scale=1, maximum-scale=3, minimum-scale=1, user-scalable=no”> <!--為移動(dòng)設(shè)備添加 viewport-->
          <meta name=”apple-mobile-web-app-title” content=”標(biāo)題”> <!--iOS 設(shè)備 begin-->
          <meta name=”apple-mobile-web-app-capable” content=”yes”/>  <!--添加到主屏后的標(biāo)題(iOS 6 新增)
          是否啟用 WebApp 全屏模式,刪除蘋果默認(rèn)的工具欄和菜單欄-->
          <meta name=”apple-itunes-app” content=”app-id=myAppStoreID, affiliate-data=myAffiliateData, app-argument=myURL”>
          <!--添加智能 App 廣告條 Smart App Banner(iOS 6+ Safari)-->
          <meta name=”apple-mobile-web-app-status-bar-style” content=”black”/>
          <meta name=”format-detection” content=”telphone=no, email=no”/>  <!--設(shè)置蘋果工具欄顏色-->
          <meta name=”renderer” content=”webkit”> <!-- 啟用360瀏覽器的極速模式(webkit)-->
          <meta http-equiv=”X-UA-Compatible” content=”IE=edge”>     <!--避免IE使用兼容模式-->
          <meta http-equiv=”Cache-Control” content=”no-siteapp” />    <!--不讓百度轉(zhuǎn)碼-->
          <meta name=”HandheldFriendly” content=”true”>     <!--針對(duì)手持設(shè)備優(yōu)化,主要是針對(duì)一些老的不識(shí)別viewport的瀏覽器,比如黑莓-->
          <meta name=”MobileOptimized” content=”320″>   <!--微軟的老式瀏覽器-->
          <meta name=”screen-orientation” content=”portrait”>   <!--uc強(qiáng)制豎屏-->
          <meta name=”x5-orientation” content=”portrait”>    <!--QQ強(qiáng)制豎屏-->
          <meta name=”full-screen” content=”yes”>              <!--UC強(qiáng)制全屏-->
          <meta name=”x5-fullscreen” content=”true”>       <!--QQ強(qiáng)制全屏-->
          <meta name=”browsermode” content=”application”>   <!--UC應(yīng)用模式-->
          <meta name=”x5-page-mode” content=”app”>   <!-- QQ應(yīng)用模式-->
          <meta name=”msapplication-tap-highlight” content=”no”>    <!--windows phone 點(diǎn)擊無高亮
          設(shè)置頁面不緩存-->
          <meta http-equiv=”pragma” content=”no-cache”>
          <meta http-equiv=”cache-control” content=”no-cache”>
          <meta http-equiv=”expires” content=”0″>
          

          17 你做的頁面在哪些流覽器測(cè)試過?這些瀏覽器的內(nèi)核分別是什么?

          • IE: trident內(nèi)核
          • Firefoxgecko內(nèi)核
          • Safari:webkit內(nèi)核
          • Opera:以前是presto內(nèi)核,Opera現(xiàn)已改用Google - ChromeBlink內(nèi)核
          • Chrome:Blink(基于webkit,Google與Opera Software共同開發(fā))

          18 div+css的布局較table布局有什么優(yōu)點(diǎn)?

          • 改版的時(shí)候更方便 只要改css文件。
          • 頁面加載速度更快、結(jié)構(gòu)化清晰、頁面顯示簡(jiǎn)潔。
          • 表現(xiàn)與結(jié)構(gòu)相分離。
          • 易于優(yōu)化(seo)搜索引擎更友好,排名更容易靠前。

          19 a:img的alt與title有何異同?b:strong與em的異同?

          • alt(alt text):為不能顯示圖像、窗體或applets的用戶代理(UA),alt屬性用來指定替換文字。替換文字的語言由lang屬性指定。(在IE瀏覽器下會(huì)在沒有title時(shí)把alt當(dāng)成 tool tip顯示)
          • title(tool tip):該屬性為設(shè)置該屬性的元素提供建議性的信息
          • strong:粗體強(qiáng)調(diào)標(biāo)簽,強(qiáng)調(diào),表示內(nèi)容的重要性
          • em:斜體強(qiáng)調(diào)標(biāo)簽,更強(qiáng)烈強(qiáng)調(diào),表示內(nèi)容的強(qiáng)調(diào)點(diǎn)

          20 你能描述一下漸進(jìn)增強(qiáng)和優(yōu)雅降級(jí)之間的不同嗎

          • 漸進(jìn)增強(qiáng):針對(duì)低版本瀏覽器進(jìn)行構(gòu)建頁面,保證最基本的功能,然后再針對(duì)高級(jí)瀏覽器進(jìn)行效果、交互等改進(jìn)和追加功能達(dá)到更好的用戶體驗(yàn)。
          • 優(yōu)雅降級(jí):一開始就構(gòu)建完整的功能,然后再針對(duì)低版本瀏覽器進(jìn)行兼容。

          區(qū)別:優(yōu)雅降級(jí)是從復(fù)雜的現(xiàn)狀開始,并試圖減少用戶體驗(yàn)的供給,而漸進(jìn)增強(qiáng)則是從一個(gè)非常基礎(chǔ)的,能夠起作用的版本開始,并不斷擴(kuò)充,以適應(yīng)未來環(huán)境的需要。降級(jí)(功能衰減)意味著往回看;而漸進(jìn)增強(qiáng)則意味著朝前看,同時(shí)保證其根基處于安全地帶

          21 為什么利用多個(gè)域名來存儲(chǔ)網(wǎng)站資源會(huì)更有效?

          • CDN緩存更方便
          • 突破瀏覽器并發(fā)限制
          • 節(jié)約cookie帶寬
          • 節(jié)約主域名的連接數(shù),優(yōu)化頁面響應(yīng)速度
          • 防止不必要的安全問題

          頁設(shè)計(jì)圖

          視頻講解課程

          1.設(shè)計(jì)圖分析和HTML模塊化結(jié)構(gòu):https://www.ixigua.com/i6903745684596326915/

          2.HTML模塊化和CSS模塊化示例:https://www.ixigua.com/i6904203127541465611/


          HTML+CSS模塊化基礎(chǔ)代碼

          核心知識(shí)點(diǎn)

          1. 分析設(shè)計(jì)圖結(jié)構(gòu)和模塊劃分
            1. 橫向分:頭部,導(dǎo)航,banner,中間主體,底部
            2. 按頁面分:列表頁,詳情頁,單頁
            3. 模塊劃分:列表,輪播,自定義模塊
          2. 了解頁面布局和模塊化布局的區(qū)別
            1. 頁面布局主要是分欄唯一功能,不能定義樣式,一般用 col-為前綴命名
          3. 了解html模塊化命名規(guī)范
            1. 列表類模塊使用 ul-為前綴命名
              1. 列表li里面的命名規(guī)范
                1. 都以短的英文縮寫為主
                2. 圖片 .pic
                3. 文本 .txt
                4. 標(biāo)題 .tit
                5. 日期 .date
                6. 簡(jiǎn)介 .desc
                7. 信息 .info
                8. 按鈕 .btn
                9. 更多 .more
            2. 其他自定義模塊都用 m- 為前綴命名
            3. 單獨(dú)元素都已 g- 為前綴命名
              1. 大標(biāo)題 g-tit1
              2. 按鈕 g-btn
            4. 通用的模塊統(tǒng)一命名
              1. 頭部 header
              2. 底部 footer
              3. 主導(dǎo)航 nav
              4. 側(cè)導(dǎo)航 snv
              5. 分頁 pages
              6. 當(dāng)前位置 cur
          4. 了解CSS模塊化寫法規(guī)范和編碼順序
            1. 先寫初始化樣式
            2. 然后是頭部底部公用樣式
            3. 然后寫每個(gè)模塊的樣式
            4. 每個(gè)模塊的樣式都以模塊命開頭,每個(gè)模塊獨(dú)立
            5. .wp是限制頁面寬度的
            6. .col- 是頁面布局分欄的

          過前面幾節(jié)課的操作,我們?yōu)閣ordpress主題trans的首頁模板實(shí)現(xiàn)了動(dòng)態(tài)代碼的調(diào)用,網(wǎng)站前端的數(shù)據(jù)與wordpress數(shù)據(jù)庫(kù)的數(shù)據(jù)正式掛鉤上。在接下來的課程中,我們還要修改trans主題的文章列表頁、文章詳情頁、搜索頁等等。這個(gè)時(shí)候,如果你夠細(xì)心的話,會(huì)發(fā)現(xiàn)一個(gè)問題:trans主題的這些模板頁面的頭部、右側(cè)邊欄、底部的數(shù)據(jù)都是一樣的。也就是說,我們每創(chuàng)建一個(gè)動(dòng)態(tài)模板之時(shí),都要重新修改一下這幾個(gè)部分的代碼。這時(shí),我們可能會(huì)想到,既然代碼都是一樣的,為什么不能把這幾部分的代碼做成幾個(gè)公共的模板,供其它模板直接調(diào)用?這就是我們今天所要探討的問題——拆分wordpress主題trans的首頁動(dòng)態(tài)模板,做成幾個(gè)公共模板:頭部模板、右側(cè)邊欄模板、底部模板。下面,我們就一個(gè)一個(gè)地來實(shí)現(xiàn)。

          一、頭部模板——header.php。

          trans主題首頁模板的頭部,從所有前端頁面展示效果看,從最上端到搜索框那里就是首頁的頭部,如下圖:


          我們?cè)趖rans主題目錄下創(chuàng)建一個(gè)header.php,然后在trans主題首頁動(dòng)態(tài)模板中找到頭部的所有代碼。首頁頭部的可視化代碼是包含在< header></header>標(biāo)簽里的,這個(gè)找起來不難。我們還要把網(wǎng)頁代碼的頭部< head></head>里的代碼也要找出來。簡(jiǎn)單地說,就是從網(wǎng)頁代碼的最頂部,一直到</header>這個(gè)結(jié)束標(biāo)簽,把這段代碼剪切下來,粘貼到header.php文件中。代碼如下:

          < !DOCTYPE html>< html>< head>< meta charset="UTF-8">< title>< ?php echo get_bloginfo("name"); ?></title>< link rel="stylesheet" href="< ?php bloginfo("wpurl"); ?>/wp-includes/css/dashicons.css"> < link rel="stylesheet" href="< ?php echo get_bloginfo("stylesheet_url"); ?>">< /head>< body>< !-- 頭部 --> < header>< div>< div>< ul>< a href="< ?php bloginfo("siteurl"); ?>">< img src="< ?php echo get_option("logo_img") ?: bloginfo("template_url")."/images/logo.png"; ?>" alt=""></a></ul>< ul>< ?php $menu = array( 'container' => false, //最外層標(biāo)簽名'echo' => false, //不讓直接輸出,而是以一個(gè)變量'theme_location' => 'menu_top', //菜單名 'depth' => 0, //菜單深度);echo strip_tags(wp_nav_menu( $menu ), '<a>' );?> </ul></div></div>< div>< div>< ul>< li id="prev">< span class="dashicons-before dashicons-arrow-left-alt"></span></li>< li id="next">< span class="dashicons-before dashicons-arrow-right-alt"></span></li>< li id="brush">< span class="dashicons-before dashicons-image-rotate"></span></li></ul>< ul>< form action="< ?php bloginfo("siteurl"); ?>" method="get">< input type="search" name="s" placeholder="搜索...">< input type="submit" value="搜索"></form> </ul></div></div></header>

          二、右側(cè)邊欄模板——sidebar.php

          trans主題首頁模板的右側(cè)邊欄,如下圖所示:


          在trans主題目錄下創(chuàng)建一個(gè)sidebar.php文件,然后,從首頁模板index.php的代碼中找到右側(cè)邊欄的代碼。右側(cè)邊欄的所有代碼包含在< div></div>這對(duì)div中,我們把整個(gè)< div>的所有代碼剪切下來,粘貼到sidebar.php文件中,代碼如下:

          <!-- 側(cè)邊欄 -->< div>< div class="c_right_0 right_con">< ul>< span class="dashicons-before dashicons-admin-post"></span>最新文章</ul>< ul>< ?php query_posts('posts_per_page=10&caller_get_posts=1&orderby=new'); while (have_posts()) : the_post(); echo '<a href="'.get_the_permalink().'" title="'.get_the_title().'">';echo get_the_title(); echo '</a>';endwhile; wp_reset_query(); ?> </ul></div>< div class="c_right_1 right_con">< ul>< span class="dashicons-before dashicons-admin-post"></span>熱門文章</ul> < ?php query_posts('posts_per_page=8&caller_get_posts=1&orderby=comment_count'); while (have_posts()) : the_post(); ?>< ul>< div>< a href="< ?php the_permalink(); ?>">< ?php if(has_post_thumbnail()) { //如果有特色圖片,就調(diào)用特色圖片the_post_thumbnail( 'thumbnail' ,array( 'alt' => trim(strip_tags( $post->post_title )), 'title' => trim(strip_tags( $post->post_title )),'class' => 'home-thumb')); }else { //否則調(diào)用文章第一張圖片echo '< img src="'.catch_first_image().'" alt="'.$post->post_title.'" width="150" height="150" />';}?></a></div>< div>< li>< a href="< ?php the_permalink(); ?>">< ?php the_title(); ?></a></li>< li>< span class="dashicons-before dashicons-calendar-alt">< ?php the_time("Y年m月d日"); ?> </span>< span class="dashicons-before dashicons-visibility">< ?php get_post_meta($post->ID,"views",true); ?> </span></li></div></ul> < ?php endwhile; wp_reset_query(); ?></div>< div class="c_right_2 right_con">< ul>< span class="dashicons-before dashicons-welcome-widgets-menus"></span>熱門標(biāo)簽</ul>< ul> < ?php wp_tag_cloud('number=40&orderby=count&order=DESC&smallest=13&largest=13&unit=px'); ?></ul></div></div>

          三、底部模板——footer.php

          trans主題首頁模板的底部效果如下圖:


          ?在trans主題目錄下創(chuàng)建一個(gè)footer.php文件,然后在首頁index.php找到底部的代碼,底部是包含在< footer></footer>這個(gè)標(biāo)簽里的。我們從< footer>開始,一直剪切到index.php模板的代碼結(jié)尾,粘貼到footer.php文件中,代碼如下:

          <!-- 底部 -->< footer>< div>< ul><?php if(is_home()){ //如果是首頁,就調(diào)用友情鏈接wp_list_bookmarks('title_li=&before=&after=');}else{ //否則就調(diào)用底部導(dǎo)航$menu = array( 'container' => false, //最外層標(biāo)簽名'echo' => false, //不讓直接輸出,而是以一個(gè)變量'theme_location' => 'menu_bottom', //菜單名 'depth' => 0, //菜單深度);echo strip_tags(wp_nav_menu( $menu ), '<a>' );}?></ul></div>< div>< ul>< li>? <?php echo date("Y"); ?> <?php bloginfo("name"); ?> | <?php echo get_option("beian"); ?> | < a href="<?php echo get_option("map"); ?>">網(wǎng)站地圖</a></li>< li>Power by WordPress | Theme <?php echo wp_get_theme(); ?></li></ul></div></footer></body></html>

          四、引入公共模板。

          通過上面三步的操作,我們就把index.php模板的頭部代碼、右側(cè)邊欄代碼、底部代碼給獨(dú)立出來了,做成了公共的模板:header.php、sidebar.php、footer.php 。在index.php模板中,我們剪切掉了這幾部分,只剩下了左側(cè)邊主體列表的。這時(shí),我們要做的就是,在index.php模板中引入這幾個(gè)公共模板。

          方法一:使用wordpress提供的函數(shù)來引入。

          wordpress已經(jīng)為我們提供了這幾個(gè)公共模板的引入方法:

          頭部模板引入:<?php get_header(); ?>

          側(cè)邊欄模板引入:<?php get_sidebar(); ?>

          底部模板引入:<?php get_footer(); ?>

          方法二:通過include()這個(gè)PHP原生函數(shù)來引入。

          頭部模板引入:<?php include("header.php"); ?>

          側(cè)邊欄模板引入:<?php include("sidebar.php"); ?>

          底部模板引入:<?php include("footer.php"); ?>

          include()方法可以用來引入任何php文件,而wordpress提供的這幾個(gè)函數(shù)就有所限制,只能引入指定名字的PHP文件。

          能過上面的操作,我們就完成了wordpress主題trans首頁模板的切割,把它切割成4個(gè)模板:index.php首頁、header.php頭部模板、sidebar.php側(cè)邊欄模板、footer.php底部模板。這樣的好處是,以后,我們創(chuàng)建其它trans主題模板時(shí),就不需要再寫頭部、側(cè)邊欄、底部的代碼了,后期代碼修改和維護(hù)也更加方便。


          主站蜘蛛池模板: 成人无号精品一区二区三区 | 精品久久久久一区二区三区| 91一区二区视频| 手机看片福利一区二区三区 | 色视频综合无码一区二区三区| 天堂一区二区三区在线观看| 国产精品亚洲一区二区麻豆| 国产精品第一区揄拍| 国模视频一区二区| 制服美女视频一区| 国产精品综合一区二区三区| 亚洲综合无码一区二区痴汉| 日韩精品视频一区二区三区| 免费视频一区二区| 亚洲AV无码一区二区乱子伦| 狠狠做深爱婷婷综合一区 | 国产乱码精品一区二区三区| 亚洲视频免费一区| 亚洲一区在线视频观看| 亚洲av一综合av一区| 亚洲AV无码一区二区三区系列| 中文字幕色AV一区二区三区| 国产午夜毛片一区二区三区| 一区二区三区高清视频在线观看| 色精品一区二区三区| 国产产一区二区三区久久毛片国语 | 国产自产V一区二区三区C| 亚洲AV永久无码精品一区二区国产 | 麻豆AV一区二区三区| 国产成人无码一区二区三区在线 | 国精产品999一区二区三区有限 | 日本一道一区二区免费看| 国产激情精品一区二区三区| 亚洲大尺度无码无码专线一区| 中文字幕日韩一区二区三区不卡| 免费看一区二区三区四区| 国产伦精品一区二区三区视频猫咪| 国产一区在线视频观看| 国产精品资源一区二区| 精品国产日韩亚洲一区在线| 最新中文字幕一区|