整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          css中如何讓div水平居中(上)

          端面試題中經常會出現這個問題,接下來,小郭就帶你揭秘幾種最常見的答案。

          關注我!了解更多前端干貨!

          先設定一個html結構以及css的基本樣式。

          <!DOCTYPE html>
          <html lang="en">
          <head>
              <meta charset="UTF-8">
              <title>如何讓div實現水平居中</title>
          </head>
          <body>
              <div id="dad">
                  <div id="son"></div>
              </div>
          </body>
          </html>

          css樣式

          #dad{
              width: 400px;
              height: 200px;
              border: 3px solid green;
              margin: 30px auto;
          }
          #son{
              width: 100px;
              height: 100px;
              background: purple;
          }

          方法一:純margin

          /*css處添加下面代碼*/
          #son{
          		margin:0 auto;
          }

          方法二:position定位

          /*css處添加下面代碼*/
          #dad{
              position: relative;
          }
          #son{
              position: absolute;
          		left:50%;
              margin-left:-50px;
          }
          /*注意:margin-left是負值,是#son這個div寬的一半*/?

          方法三:flexbox

          /*css處添加下面代碼*/
          #dad{
              display: flex;
              justify-content: center;    
          }
          /*注意:彈性盒子的大部分屬性都是寫在父級上的*/

          以上三種是最常見的,下期我們來講講其他奇形怪狀的方法~

          關注我,帶你了解更多前端干貨!

          學前端,就選銳盈課堂!


          ebDriver API提供了內置方法來查找基于不同屬性的WebElement,例如ID,Name,Class,XPath,CSS Selectors,鏈接Text等。下面我們就針對這些方法進行元素查找定位。


          打開Chrome瀏覽器,按F12出現開發者工具選項,選擇Elements,優先選擇Chrome的原因就是因為瀏覽器比較好用。

          1. 鼠標點擊下圖彈框中左上角的箭頭,再點擊頁面上要定位的元素

          2. 對應的html頁面上會顯示對應的數據,并顯示灰色背景

          3. 按Ctrl+F顯示出來搜索框,此處手寫元素標簽定位

          如果你手寫元素技能還有待提高的話,可以使用輔助工具來幫助你,Chrome有一個神器插件,可代替你手寫元素的困擾


          ChpoPath插件下載地址:

          https://pan.baidu.com/s/1FCoSQHC1YdBBpETF71Ldfw ; 99tk

          ID定位

          driver.find_element_by_id("kw").send_keys('你好')

          NAME定位

          driver.find_element_by_name("wd").send_keys('name')

          CLASS_NAME定位

          driver.find_element_by_class_name("s_ipt").send_keys('class_name')

          TAG_NAME定位

          這個是行不通的,因為重復的標簽太多了,無法定位準確

          from selenium import webdriver
          from selenium.webdriver.common.by import By
          
          driver = webdriver.Chrome()
          driver.get('https://www.baidu.com/')
          
          
          try:
              driver.find_element_by_tag_name("input").send_keys('tag——name')
              print('找到了')
          except Exception as e:
              print(f'么找到{e}')

          我們使用tag_name定位,加了異常捕獲,運行結果如下:

          F:\virtualEnvironment\venv\Scripts\python.exe F:/git/AuomationTest/AuomationTestProject/webTestAuomation/element_localization.py
          么找到Message: element not interactable
            (Session info: chrome=89.0.4389.72)
          
          
          Process finished with exit code 0

          實踐檢驗了使用tag_name來定位是不靠譜的。


          文本定位,link_text只針對含a標簽的,不含a標簽的使用,會拋錯。

          driver.find_element_by_link_text("新聞").click()

          部分文本定位,partial_link_text也是只針對含a標簽的使用,元素的部分文本內容定位,不含a標簽的使用,會拋錯

          driver.find_element_by_partial_link_text("吃喝").click()




          萬能元素定位,也就是xpath和css定位,css定位后的代碼運行起來的速度相對來說比xpath代碼運行起來要快很多。

          XPATH用法:

          driver.find_element_by_xpath("xpath表達式")

          xpath表達式有絕對路徑和相對路徑,通常我們都是使用相對路徑

          1. 絕對路徑:/html/body/div[3]/div[1]/div[1]/div[1]/ul/li[9]/a

          2. 相對路徑://*[text()="吃喝玩樂"]

          我們不推薦絕對路徑,因為前端代碼稍微更改就會影響到定位,推薦使用相對路徑

          xpath 基本語法

          注釋信息

          /

          絕對定位,如果是選擇當前p標簽下的子級的話,可以使用

          //

          相對定位,當前p標簽下的所有節點,不考慮它們的位置

          @

          選取屬性,//*[@id="xxx"],//*[@class="xxx"]

          *

          通配符,匹配所有 //*

          @*

          通配符,匹配所有屬性 //input[@*="xxx"]


          • 標簽名+節點屬性定位

          //a[@class="header-title"]

          • 組合元素+下標定位

          //ul[@class="api-main"][1]/li/a[@class="list-con"]


          盡量能不使用下標就不要使用下標定位,前端稍微修改代碼也會影響頗大

          • 模糊定位contains,通常元素不怎么好找時,可以使用模糊定位

          //ul[@class="api-main"]/li/a[contains(@class, "list-con")]

          當然模糊定位還有一些表達式:

          //*[contains(text(), 文本元素屬性)]

          獲取含文本信息的元素

          //*[contains(@id, 元素屬性)]

          id也可以是class、name

          //*[starts-with(@id, 元素屬性)]

          匹配什么開頭

          //*[ends-with(@id, 元素屬性)]

          匹配什么結尾

          //*[matchs(text(), 文本元素屬性)]

          正則匹配含文本的元素


          • 文本定位,找不到一些唯一標簽時,可以使用文本定位

          //*[text()="吃喝玩樂"]

          • 邏輯運算定位,and、or

          //ul[@class="api-main"]//*[@class="list-con" and text()="金融科技"]

          • 軸定位
          1. ancestor:爺爺節點
          2. parent:父級節點
          3. preceding:當前元素節點標簽之前的所有節點
          4. preceding-sibling:當前元素節點標簽之前的所有節點兄弟節點,同級的
          5. following:當前元素節點標簽之后的所有節點
          6. following-sibling:當前元素節點標簽之后的所有節點兄弟節點,同級的

          //ul[@class="api-main"]//*[text()="交通地理"]/parent::li//following-sibling::li//a

          CSS用法:

          driver.find_element_by_css_selector("css表達式")
          • class屬性的直接 .元素屬性

          .api-main-list

          • id屬性的直接 #元素屬性

          #password-o

          • 直接元素定位

          [class="api-main"]

          • 層級組合定位

          [id="s-top-left"]>[target="_blank"]

          • 開頭模糊定位

          a[href^="https"]

          • 結尾模糊定位

          a[href$="com"]

          • 包含模糊定位

          a[href*="baidu"]

          • 包含單詞模糊定位

          [target~="_blank"]

          • child的用法,實操后無法確定是不是已經定到元素,但有些時候運行代碼會成功,所以也挺無語的,css運行是快,但是定位起來還是麻煩些...

          .api-main:first-child:父級元素下第一個元素

          .api-main:last-child:父級元素下最后一個元素

          .api-main:only-child:父級元素下唯一一個子元素

          .api-main:nth-child(下標):父級元素下第幾個元素

          關于css的元素定位,后面實操后再給補上,以上總結或許能幫助到你,或許幫助不到你,但還是希望能幫助到你,如有疑問、歧義,評論區留言會及時修正發布,謝謝



          未完,待續...

          一直都在努力,希望您也是!

          于CSS樣式中的定位

          對于css中的屬性position(定位)來說,確實在網頁布局上減少了很多麻煩,它可以將任何元素定為到頁面上,相對于其他布局方式來說更加簡便。它主要分為三種定位:

          一、相對定位

          position : relative;相對定位通常是相對自身來進行定位,在自身原來位置上進行移動,它不會改變元素的類型,屬于沒有完全地脫離文檔流,不會影響后面元素的位置。通常情況下,它一般用作絕對定位的父級。

          二、絕對定位

          position :absolute;絕對定位是指在父級發生相對定位的情況下,子級進行以父級為參照的定位,如果說父級沒有發生相對定位時,則它以<body>為參照進行定位。通常使用絕對定位會使元素類型變為行內塊,會影響后面元素的位置。使用absolute定位后,定位元素是脫離文檔流的,這時候父級會檢測不到定位元素的寬高。inline元素使用absolute定位之后,可以對其設置寬高;元素是不可以同時使用絕對定位和浮動的。

          三、固定定位

          position : flxed; 固定定位于前面兩種不同,它是相對于瀏覽器進行定位,固定在整個屏幕的某個位置,并且不會隨著鼠標滾輪進行移動,通常用作回到頂部、頁邊廣告等,定位層級z-index一般較高。固定定位也會使元素類型變為行內塊,影響后面元素的位置。

          關于CSS中position的使用就簡單介紹到這里,希望能夠對您的布局有幫助,若有錯誤和好的補充歡迎討論,謝謝!


          主站蜘蛛池模板: 波多野结衣的AV一区二区三区 | 日韩亚洲AV无码一区二区不卡| 久久青草国产精品一区| 国产成人无码精品一区二区三区| 另类ts人妖一区二区三区| 久久久综合亚洲色一区二区三区| 国产精品一区视频| 蜜臀AV一区二区| 日韩人妻无码一区二区三区99| 国产成人一区二区动漫精品| 久久久国产精品亚洲一区| 在线观看国产一区| 中文字幕亚洲一区二区三区| 精品国产亚洲第一区二区三区| 亚洲国产精品一区二区成人片国内| 亚洲av无码一区二区三区观看 | 亚洲成AV人片一区二区密柚| 日本一区二区三区精品国产 | 亚洲熟妇成人精品一区| 中文字幕精品一区二区| 日本一区二区三区中文字幕| 国产一区二区视频免费| 无码人妻精品一区二区三区久久| 亚洲中文字幕一区精品自拍| 乱色精品无码一区二区国产盗| 亚洲色偷精品一区二区三区| 51视频国产精品一区二区| 精品国产一区AV天美传媒| 日韩精品无码一区二区三区不卡 | 精品亚洲AV无码一区二区三区| 精品成人一区二区三区免费视频 | 免费av一区二区三区| 亚洲熟妇av一区| 国产亚洲3p无码一区二区| 国产综合精品一区二区| 久久久国产精品亚洲一区| 一区二区三区杨幂在线观看| 另类免费视频一区二区在线观看| 亚洲AV无码一区二区三区久久精品| 无码喷水一区二区浪潮AV| 中文字幕精品一区二区日本|