重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
其實是個挺復雜的事情,因為css的重載、復用和DOM的可變性,需要我們動態地分析。
成都創新互聯主營烏拉特后網站建設的網絡公司,主營網站建設方案,成都app軟件開發公司,烏拉特后h5小程序定制開發搭建,烏拉特后網站營銷推廣歡迎烏拉特后等地區企業咨詢
我的想法是給chrome寫個插件,然后對整個站點啟用。
基本思路:
加載到需要測試的頁面里,先掃描一遍所有的class和id。
監聽DOMSubtreeModified事件,操作網頁,充分測試,插件針對性地進行增補class和id。
重復以上步驟得到整個站點的列表
然后就是掃描css file把不沒用上的的全去掉。
一Html.ActionLink("linkText","actionName")該重載的第一個參數是該鏈接要顯示的文字,第二個參數是對應的控制器的方法,默認控制器為當前頁面的控制器,如果當前頁面的控制器為Products,則 Html.ActionLink("detail","Detail") 則會生成 a href="/Products/Detail"all/a 二Html.ActionLink("linkText","actionName","controlName")該重載比第一個重載多了一個參數,他指定了控制器的名稱,如Html.ActionLink("detail","Detail","Products")則會生成a href="Products/Detail"all/a 三Html.ActionLik("linkText","actionName",routeValues)routeValue可以向action傳遞參數,如Html.ActionLink("detail","Detail",new { id=1})會生成 a href="Products/Detail/1"detail/a,此處假設當前的控制器是Products.四Html.ActionLink("linkText","actionName",routeValues,htmlAttributes)htmlAttribute可以設置a標簽的屬性,如Html.ActionLink("detail","Detail",new{id=1},new{ target="_blank"})會生成 a href="Products/Detail/1" target="_blank"detail/a,需要主要的是如果寫成 new{ target="_blank",class="className"}則會報錯,因為class是關鍵字,此處應該寫成 @class="className"。 五Html.ActionLink("linkText","actionName","controlName",routeValues,htmlAttributes)該重載包含了上面提到的所有參數類型
[img]他不是為了這樣寫而這樣寫,他們是創建或者引用了一個css庫,一些基本的通用的樣式都會存在于這個css樣式表內。做項目的時候直接引用這個樣式表(而不用每次都創建一個表,項目所有頁面都會引用這個css庫),而這個庫不能實現的或者實現的效果不是想要的則重新編寫樣式表,將想修改的樣式進行重寫。這樣就形成了你所看到的分開寫的效果。希望對你有所幫助
改變背景顏色
改變對話框(窗口)的背景顏色是最簡單的改變Windows應用程序外觀的方法,根據Windows創建與管理機理,一般有兩種方法。一種是處理WM_CTLCOLOR消息,首先創建所選背景顏色的刷子,然后調用SetBkColor()或SetDialogBkColor()以所創建的刷子來繪制窗口或對話框的背景。需要重畫窗口或對話(或對話的子控件)時,Windows向對話發送消息WM_CTLCOLOR,應用程序處理WM_CTLCOLOR消息并返回一個用來繪畫對話背景的刷子句柄。另外一種是響應Windows的WM_ERASEBKGND消息,Windows向窗口發送一個WM_ERASEBKGND消息通知該窗口擦除背景,可以使用VC++的ClassWizard重載該消息的缺省處理程序來擦除背景(實際是用刷子畫),并返回TRUE以防止Windows擦除窗口。
2.改變窗口外形
通過使用新的SDK函數SetWindowRgn(),可以將繪畫和鼠標消息限定在窗口的一個指定的區域,因此實際上是使窗口成為指定的不規則形狀(區域形狀)。“區域”是Windows GDI中一種強有力的機制,區域是設備上的一塊空間,可以是任意形狀,復雜的區域可以由各個小區域組合而成。Windows內含的區域創建函數有CreateRectRgn()、CreatePolyRgn()、CreatePolygonRgn()、CreateRoundRectRgn()和CreateEllipticRgn(),再通過CombineRgn()來組合區域,即可得到復雜形狀的區域,獲得復雜形狀的窗口外形。
通過上面的方法雖然可以得到“異形”窗口,但感覺顏色單調,外形也不夠“COOL”,能否獲得更酷的“異形”對話框/窗口呢?回答是肯定的。下面就介紹利用位圖和蒙板創建“異形”對話框/窗口的方法。
3.利用位圖創建異形對話框窗口
利用位圖創建異形對話框原理是根據象素的顏色來進行“扣像”處理,對所有非指定顏色象素區域進行區域組合。利用這一技術,實際上就是實現對話框/窗口的位圖背景,并且對指定的顏色區域進行透明處理。下面就以透明位圖為背景的對話框為例來說明:
首先用繪圖軟件如PhotoShop繪制編輯一幅擬做對話框背景用的圖片,用BMP格式保存,假設存為Back.Bmp。需要說明的是,雖然Visual C++集成開發環境的資源編輯器只能編輯不超過16色的位圖,但完全我們可以以真彩色方式存儲,不必理會Visual C++的警告。
下一步是用Visual C++的AppWizard創建一個基于對話框的應用程序假定命名為Trans。用資源編輯器引入背景圖片Back.Bmp,如果是高彩色,不必理會出現的警告信息,點擊OK確認即可。為了明確,修改默認的資源ID標識IDB_BITMAP1為IDB_BACKBMP。然后修改對話框的Style為Popup,Border為None,如圖1。
圖1
向CTransDlg類添加區域處理功能模塊void CTransDlg::SetupRegion(CDC *pDC /*對話框窗口DC*/, UINT BackBitmapID /*背景位圖資源ID*/, UINT MaskBitmapID /*區域處理位圖資源ID*/, COLORREF TransColor = 0x00000000 /*透明顏色值,默認為黑色*/)。到目前為止,我們暫時認為MaskBitmapID等同于BackBitmapID。其核心工作是根據MaskBitmapID指示位圖的象素顏色進行區域組合。完整的代碼如下:
void CTransDlg::SetupRegion(CDC *pDC /*對話框窗口DC*/,
UINT BackBitmapID /*背景位圖資源ID*/,
UINT MaskBitmapID /*區域處理位圖資源ID*/,
COLORREF TransColor /*透明顏色值*/)
{
CDC memDC;
CBitmap cBitmap;
CBitmap* pOldMemBmp = NULL;
COLORREF cl;
CRect cRect;
UINT x, y;
CRgn wndRgn, rgnTemp;
//取得窗口大小
GetWindowRect(cRect);
//背景位圖資源ID
m_BackBitmapID = BackBitmapID
//裝載位圖
cBitmap.LoadBitmap(MaskBitmapID);
memDC.CreateCompatibleDC(pDC);
pOldMemBmp = memDC.SelectObject(cBitmap);
//首先創建默認的完整區域為完整的窗口區域
wndRgn.CreateRectRgn(0, 0, cRect.Width(), cRect.Height());
//下面的兩層循環為檢查背景位圖象素顏色,進行透明區域處理;
//當象素顏色為指定的透明值時,即將該點從區域中剪裁掉。
//其中用到的幾個成員變量m_MaskLeftOff、m_MaskTopOff、
//m_MaskRightOff、m_MaskBottomOff、m_FrameWidth
//和m_CaptionHeight,其作用后面再作說明,此時可全部當作0來處理。
for(x= m_FrameWidth+m_MaskLeftOff;
x =cRect.Width() - m_FrameWidth-m_MaskRightOff; x++){
for(y = m_CaptionHeight+m_MaskTopOff;
y =cRect.Height() - m_FrameWidth-m_MaskBottomOff; y++){
//取得坐標處象素的顏色值
cl = memDC.GetPixel(x - m_FrameWidth-m_MaskLeftOff,
y - m_CaptionHeight-m_MaskTopOff);
if(col == TransColor)
{
//象素顏色為指定的透明色,創建透明“微區域”
rgnTemp.CreateRectRgn(x, y, x+1, y+1);
//“扣像”,從完整的區域中“扣除”透明的“微區域”
wndRgn.CombineRgn(wndRgn, rgnTemp, RGN_XOR);
//刪除剛創建的透明“微區域”,釋放系統資源
rgnTemp.DeleteObject();
}
}
}
if (pOldMemBmp) memDC.SelectObject(pOldMemBmp);
//用設定窗口為指定的區域
SetWindowRgn((HRGN)wndRgn, TRUE);
}
重置系統默認的背景擦除操作,即添加WM_ERASEBKGND消息處理過程,這一步可以借助ClassWizard來簡化操作。
BOOL CTransDlg::OnEraseBkgnd(CDC* pDC)
{
// TODO: Add your message handler code here and/or call default
CRect rect;
CDC memDC;
CBitmap cBitmap;
CBitmap* pOldMemBmp = NULL;
GetWindowRect(rect);
//裝載背景位圖
cBitmap.LoadBitmap(m_BackBitmapID);
memDC.CreateCompatibleDC(pDC);
pOldMemBmp = memDC.SelectObject(cBitmap);
//將背景位圖復制到窗口客戶區
pDC- BitBlt(0, 0, rect.Width(), rect.Height(),
memDC, 0, 0, SRCCOPY);
if (pOldMemBmp) memDC.SelectObject( pOldMemBmp );
//刪除系統卻省的OnEraseBkgnd功能
//return CDialog::OnEraseBkgnd(pDC);
return TRUE;
}
接下來是在WM_PAINT的消息處理函數OnPaint()中添加代碼。由于當背景位圖比較大時,進行區域處理比較耗時,所以只在啟動時進行一次處理。一種方法是OnInitDialog()處理,但這樣會在從啟動程序到窗口出現有相當的延遲,易引起程序尚未啟動的誤解。再一種方法就是在OnPaint()處理,但為了避免重復處理,可以加上一個判斷標志。以下是OnPaint()的代碼,正體為AppWizard生成,粗體為自己添加內容。
void CTransDlg::OnPaint()
{
if (IsIconic())
{
……
}
else
{
if(m_nFirstRun){ //首次運行標志
//修改鼠標光標為等待方式
BeginWaitCursor();
//設置背景區域
SetupRegion(GetWindowDC(),
IDB_BACKBMP,
IDB_BACKBMP,
0x00FFFFFF /*白色*/);
//恢復鼠標光標為正常模式
EndWaitCursor();
m_nFirstRun = 0;
}
CDialog::OnPaint();
}
}
剩下的工作就是根據背景位圖的大小來設置對話框窗口的大小和位置,這可以在OnInitDialog()中通過調用MoveWindow()來實現。再添加一些變量的聲名和初始化,即可編譯運行。圖2為運行結果示例:
圖2
4.進一步的討論
前面實現了單一模式的異形對話框,但有些情況下又需要不同的樣式,如有標題欄、邊框等,或者只作局部的處理,這就是前面兩個成員變量m_FrameWidth和m_CaptionHeight作用,通過在OnInitDialog()判斷窗口樣式,使m_FrameWidth和m_CaptionHeight取不同的值。這部分的代碼為:
BOOL CTransBmpDlg::OnInitDialog()
{
……
// TODO: Add extra initialization here
m_nFirstRun = 1;
//數據設置,窗口左上角坐標:m_Left=0,m_Top=0
//背景位圖寬高:m_Width=535,m_Height=105
SetSize(0, 0, 535, 105);
//蒙板處理區域與窗口邊框的距離
m_MaskLeftOff=m_MaskTopOff=m_MaskRightOff=m_MaskBottomOff=0;
//窗口邊框與標題欄象素值
m_FrameWidth = m_CaptionHeight = 0;
//取得窗口樣式
LONG style = ::GetWindowLong(this- m_hWnd, GWL_STYLE);
//如保留窗口風格樣式,則根據不同的窗口邊框類型
//選取不同的m_FrameWidth和m_CaptionHeight值,
//也可以根據處理位置的需要進行付值
if((style WS_BORDER) == WS_BORDER)
m_FrameWidth = ::GetSystemMetrics(SM_CXBORDER);
if((style WS_THICKFRAME) == WS_THICKFRAME)
m_FrameWidth = ::GetSystemMetrics(SM_CXFIXEDFRAME);
if((style DS_MODALFRAME) == DS_MODALFRAME)
m_FrameWidth = ::GetSystemMetrics(SM_CXFIXEDFRAME);
if((style WS_CAPTION) == WS_CAPTION){
m_FrameWidth = ::GetSystemMetrics(SM_CXFIXEDFRAME);
m_CaptionHeight = ::GetSystemMetrics(SM_CYSMCAPTION);
}
m_CaptionHeight += m_FrameWidth * 2;
//重置窗口的位置和大小
MoveWindow(m_Left, m_Top,
m_Width + m_FrameWidth * 2,
m_Height + m_CaptionHeight, TRUE);
……
return TRUE; // return TRUE unless you set the focus to a control
}
另外,為進一步增加靈活性,使窗口樣式不僅僅受背景位圖顏色的控制。通過指定SetupRegion()的MaskBitmapID 為一個我們稱之為“蒙板”的雙色位圖(多色彩也可以,但一般沒有必要),即可實現需要的操作。圖4為在同一背景位圖上,通過圖3的蒙板位圖實現的效果,并且增加了對話框窗體的邊框和標題欄屬性。
圖3
圖4
利用這種蒙板技術,可以創建出任意形狀的窗口,而與背景位圖無關。需要注意的是,對于對話框中的控件如按鈕等,如處在或部分處在通明區域中,則通明區域中部分一并被剪裁掉,是否剪裁和剪裁位置與大小,利用蒙板可以很方便地進行控制。
需要特別指出的是,SetWindowRgn()所指定的區域是針對整個窗口的,而Bitblt()/ StretchBlt()的輸出區域是針對于客戶區,兩者在定位上是不同的,編程中應加以注意并靈活應用,這也是前面之所以設置邊框大小等變量的原因。
5.結束語
這種異形窗口的創建不僅適應于對話框,而且適應于所有的基于CWnd類的派生窗口。采用這一方法,你可以創建出任何只要你能夠畫出的窗體,實現只要可以畫出,就可以做出的目標。
本文代碼在Visual C++ 5.0、6.0下調試通過,運行正常,操作系統為Windows98SE。
一、Html的基本結構:
!DOCTYPE html
html
head
meta ?charset=utf-8"
title/title
/head
body
網頁的文本、圖片等信息;
/body
/html
二、Head部分:用于表示網頁的元數據即描述網頁的基本信息
其常用標簽及屬性有:
1、title標簽:瀏覽器標簽頁顯示的標題
2、meta標簽:其常用屬性
①charset:設置文檔的字符集編碼格式。HTML5中設置字符集編碼:meta charset="UTF-8"
常見的字符集編碼格式:
a.GB-2312:國標碼,簡體中文
b.GBK:擴展的國標碼
c.UTF-8:萬國碼 Unicode 常用
②http-equiv屬性:將我們的信息寫給瀏覽器看,讓瀏覽器按照這里面的要求執行,可選屬性值:Content-Type(文檔類型)?refresh(網頁定時刷新)?set-cookie(設置瀏覽器cookie緩存) 需要配合content屬性使用。(http-equiv屬性只是表明需要設置哪一部分,具體的設置內容,放到content屬性中)
③name屬性:使用方法同“http-equiv”。將我們的信息寫給搜索引擎看
常用且需要掌握的屬性值:author(作者)?keywords(網頁關鍵字)?description(網頁描述) 這兩個屬性設置,網頁必不可少。
3、link標簽:鏈接網頁圖標(title前的小logo),其常用屬性有:
①rel屬性:聲明鏈接文件的類型,此處選icon
②type屬性:可以省略
③href屬性:表示圖片的路徑地址
三、body部分:網頁的文本、圖片等信息
標簽的分類:
塊級標簽:顯示為塊,前后隔一行(自動換行)
行級標簽:按行從左往右逐一顯示。
1、 常見的塊級標簽:
①h1/h1......h6h6:標題標簽,自動加粗,h1最大,h6最小。
②hr/:水平線標簽,添加一條水平線。
③p/p:段落標簽,
④br/:換行標簽,
⑤blockquote//blockquote:引用標簽,cite屬性,表明引用的來源,一般引用網址
瀏覽器默認首行縮進。
⑥pre/pre:預格式標簽,用于重載代碼。瀏覽器默認顯示樣式:1、顯示為等寬字體。 2、代碼中的換行、
空格等元素能在瀏覽器中顯示。
【補充】html 文件中空格的表示:nbsp;
2、 基于布局的塊級標簽
列表:無序列表、有序列表、定義列表
①有序列表:ol/ol 列表項:li/li
②無序列表:ul/ul 列表項:li/li
③定義列表(實現圖文混排):dl/dl
列表標題:dt一般只有一項/dt
列表描述項:dd可以有很多項/dd
3、組合標簽:figure/figure用于顯示圖片及圖片標題
他有兩個子標簽:img /圖片
figcaption/figcaption圖片的標題
例如:figure
img src="img/EZ.jpg" height="20%" width="20%" alt="探險家"/
figcaption探險家 伊澤瑞爾/figcaption
/figure
4、分區標簽:div/div
5、常見的行級標簽
1span(文本):無實際意義,用于包裹某部分文字,修改特定樣式,例如:
這是span style="color: red;font-size: 36px;"span/span中的文字
img(圖片):其常用屬性:①src:表示引用圖片的地址。
路徑地址的寫法:相對路徑:以當前文件為最準,去尋找圖片地址
a、與文件處于同一層的圖片,直接寫圖片名
b、圖片在當前文件下一層:文件名/圖片名
c、圖片在當前文件上一層:../圖片名
絕對路徑:盤符:/文件夾/圖片名,但 是嚴禁使用
圖片網址:網絡上的圖片鏈接,但是一般不用
②height和width:圖片的高度和寬度。可以用CSS樣式代替
③title:圖片標。當鼠標指上之后顯示的文字
④alt:當圖片無法顯示的時候,顯示的文字
2em(傾斜強調)
3strong(加粗強調)
4b(加粗)
5i(傾斜)
Strong、em、b、i的區別
1、Strong、em都表示強調,Strong為粗體,em為斜體,而Strong的強調 程度逗比em高
2、Strong和b都能加粗,em和i都能傾斜,,但是Strong和em多了一層強調的語義 。H5要求標簽盡可能實現語義化。
6q(短引用)
7small/big(縮小/放大字體):small和big分別是縮小和擴大字體,都可以多層嵌套直至上限或下限
8a(超鏈接)
1、href:超鏈接的路徑,可以是網絡鏈接,也可以是本地文件。
2、target:跳轉頁面打開的位置。_self自身頁面,_blank新頁面。
3、title:鼠標指在超鏈接上顯示的名稱。
4、Rel(被鏈接是當前的前/后一篇):指定被鏈接文檔與當前文檔的關系,搜索引擎 會利用該屬性 獲取更多的有關鏈接的信息:
rel="prev"被鏈接文檔是當前文檔的前一篇文 檔,
rel="next"被鏈接文檔是當前文檔的后一篇文檔,
rel="icon"被鏈接文檔是當前文檔的圖標
rel="stylesheet"被鏈接文檔是當前文檔的樣式表
5、Rev(當前是被鏈接的前/后一篇)
錨鏈接:
①本頁面錨鏈接:a、設置錨點:a name="top"/a
b、跳轉錨點:#name名
①頁面間錨鏈接:a、在即將跳轉頁面的指定位置設置錨點
b、跳轉錨點:頁面地址.html#name名
a href="02_常見的塊級標簽.html#Hbuilder"頁面間錨鏈接/abr/
功能性鏈接: mailto用于給指定郵箱發送郵件
file:///e:/aaa.png打開本地文件
tencent://message/?uin=1315618220 給指定QQ發送息
9s標簽,有誤文本:刪除線
s這是S標簽中的文字/sbr /
10cite標簽:瀏覽器顯示為傾斜,常用于書、畫作、作品的引用
cite這是cite中的文本/citebr /
11code:計算機代碼,不保留代碼格式
pre
code/code
/pre
12bdo:表示文本方向,屬性:dir="ltr"表示從左往右,dir="rtl"表示從右往左
bdo dir="rtl"1234567/bdobr /
kbd:表示需要用戶用鍵盤輸入的內容,瀏覽器顯示為等寬字體
請輸入“kbdEsc/kbd”推遲系統br /
13sup:上標文本,sub:下標文本
xsub6/subbr /
? copy; 空格 nbsp;
? copy; 空格 nbsp;br /
14u:下劃線
u這是下劃線/ubr /
mark:高亮或標記文本,瀏覽器顯示為黃色背景
markmark/markbr /