Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
、LoadHTMLGlob多級目錄
engine.LoadHTMLGlob("template1/**/*")
func (engine *Engine) LoadHTMLGlob(pattern string)
LoadHTMLGlob有1個參數,可以使用通配符,"template1/*"表示template1目錄下的所有文件
當模板目錄template1結構如下:
└─template1
├─admin
│ index.html
│
├─index
│ index.html
│
└─users
index.html
那么需要注意的是,每個index.html都要有{{define "..."}}......{{end}},將html包裹起來,
可以理解為給index.html起個別名,用于區分不同文件夾下相同名字文件的別名。
因為c.HTML(http.StatusOK, "index2", nil)中的index2就是所定義的別名
define "...":中的...就是別名
......:是html內容
2、模板傳參
func admin(c *gin.Context) {
c.HTML(http.StatusOK, "admin_index", gin.H{
"user": "admin",
"pass": "123456",
})
}
其中gin.H是map[string]interface{}的別名,
c.HTML有3個參數,
func (c *Context) HTML(code int, name string, obj interface{})
HTML renders the HTTP template specified by its file name. It also updates the HTTP code and sets the Content-Type as "text/html".
作用是渲染模板文件,將響應頭的Content-Type設置為 "text/html"
code int:響應碼,可以寫成http.StatusOK這樣的常量,也可以直接寫成200,因為http.StatusOK的常量值就是200,當然有可以寫成相匹配的響應碼,這里只是以正常響應的200舉例
name string:這里就是模板名,默認是文件名,如果使用{{define "..."}}......{{end}}進行了定義,那么就可以寫成別名。
obj interface{}:這里就是傳入模板的對象,類型是空接口類型,也就是說,可以傳入任意類型的值,模板都是可以接受的,在func admin(c *gin.Context)示例中,傳入了gin.H這樣的map類型,那么就可以在模板文件中進行使用。
示例代碼:
package main
import (
"github.com/gin-gonic/gin"
"net/http"
)
func main() {
engine := gin.Default()
engine.LoadHTMLGlob("template1/**/*")
engine.GET("/admin", admin)
engine.GET("/index", index)
engine.GET("/users", users)
_ = engine.Run("127.0.0.1:80")
}
func admin(c *gin.Context) {
c.HTML(http.StatusOK, "admin_index", gin.H{
"user": "admin",
"pass": "123456",
})
}
func index(c *gin.Context) {
c.HTML(http.StatusOK, "index_index", nil)
}
func users(c *gin.Context) {
c.HTML(http.StatusOK, "users_index", nil)
}
模板文件:
執行結果:
shenlan-ui (UI根目錄)
|--src (核心樣式代碼)
| |--shenlan-ui.css (UI的主樣式文件)
| |--common.css (公共樣式文件)
| |--reset.css (CSS-Reset文件)
| |--layout.css (組件文件:圖標樣式)
| |--... (其他組件文件)
|
|--demo (演示文件目錄)
|--layout.html (布局樣式文件)
|--... (其他組件的樣式文件)
rc/reset.css
/*
* @Author: xutao
* @Date: 2019-04-12 10:06:29
* @Last Modified by: xutao
* @Last Modified time: 2019-04-29 16:37:40
*/
/* 去掉所有元素的內外邊距 */
html, body, div, span,
h1, h2, h3, h4, h5, h6, p, pre,
a, img, ul, li, form, label, input,
table, tbody, tfoot, thead, tr, th, td,
audio, video {
margin: 0;
padding: 0;
}
/* 統一全局字體 */
body {
font-family: -apple-system-font,BlinkMacSystemFont,"Helvetica Neue","PingFang SC","Hiragino Sans GB","Microsoft YaHei UI","Microsoft YaHei",Arial,sans-serif
}
/* 列表元素去掉默認的列表樣式 */
ol, ul {
list-style: none;
}
/* Table元素的邊框折疊 */
table {
border-collapse: collapse;
border-spacing: 0;
}
/* 去掉默認的下劃線 */
a{
text-decoration: none;
}
/* 去掉input自帶的邊緣效果和背景顏色 */
input{
outline: none;
background: none;
}
/src/common.css
1 區分屏幕寬度的方式
/* 屏幕寬度小于340px時的樣式 */
@media (max-width: 340px){ /* 樣式1 */ }
/* 屏幕寬度在340px至410px時的樣式 */
@media (min-width: 340px) and (max-width: 410px){ /* 樣式2 */ }
/* 屏幕寬度大于410px時的樣式 */
@media (min-width: 410px){ /* 樣式3 */ }
精簡樣式:
/* 屏幕寬度在340px至410px時的樣式 */
/* 樣式2 */
/* 屏幕寬度小于340px時的樣式 */
@media (max-width: 340px){ /* 樣式1 */ }
/* 屏幕寬度大于410px時的樣式 */
@media (min-width: 410px){ /* 樣式3 */ }
這樣屏幕適配的框架就完成了
2 元素尺寸的指定
/* 屏幕寬度在340px至410px時,基準尺寸使用20px */
html{
font-size: 20px;
}
/* 屏幕寬度小于340px時,基準尺寸使用18px */
@media (max-width: 340px){
html{
font-size: 18px;
}
}
/* 屏幕寬度大于410px時,基準尺寸使用22px */
@media (min-width: 410px){
html{
font-size: 22px;
}
}
3 按比例劃分屏幕
最終common.css樣式
/*
* @Author: xutao
* @Date: 2019-06-20 22:16:01
* @Last Modified by: xutao
* @Last Modified time: 2019-06-20 23:03:17
*/
/* 屏幕寬度在340px至410px時,基準尺寸使用20px */
html{
font-size: 20px;
}
/* 屏幕寬度小于340px時,基準尺寸使用18px */
@media (max-width: 340px){
html{
font-size: 18px;
}
}
/* 屏幕寬度大于410px時,基準尺寸使用22px */
@media (min-width: 410px){
html{
font-size: 22px;
}
}
src/shenlan-ui.css
目前, 我們只有/src/reset.css和/src/common.css這兩個文件, 所以集成的時候只需要把這兩個文件引入即可。
過去幾年中,CSS已經取得了長足的進步。在過去,您可能會使用CSS來創建依賴于HTML表格和CSS浮動作為其布局系統的簡單外觀的Web應用程序。而現在,您可以設計復雜的交互式用戶界面,具有優雅的設計。
盡管CSS變得越來越先進,但為大型Web應用程序從頭編寫CSS樣式可能會耗費時間。這也可能導致樣式重復、CSS文件變長、跨瀏覽器兼容性錯誤,以及通常更復雜的代碼庫。
為了解決這一挑戰,CSS框架應運而生。CSS框架引入了一種方法,使開發人員可以采用一組預定義和標準化的CSS樣式和組件,以創建一致、吸引人且響應靈活的用戶界面。
但是由于有這么多的CSS框架可供選擇,決定適合您的應用程序的正確框架可能會很困難。您需要進行適當的比較,考慮每個CSS框架的整體特性,以便選擇最適合您需求的選項。
在本文中,我們將探討CSS框架是什么,它們的優點和局限性,以及如何開始使用它們。我們還將介紹2024年及以后您應該了解的最顯著和最常用的CSS框架。
最后,您將對CSS框架的工作原理有很好的了解,并知道如何選擇符合項目需求的框架。讓我們開始吧。
(本文內容參考:java567.com)
*請認真填寫需求信息,我們會在24小時內與您取得聯系。