2017-07-24 59 views
1

例如,CSS cursor屬性有以下允許值:url | auto | default | none | context-menu | help | pointer | progress | wait | cell | crosshair | text | vertical-text | alias | copy | move | no-drop | not-allowed | e-resize | n-resize | ne-resize | nw-resize | s-resize | se-resize | sw-resize | w-resize | ew-resize | ns-resize | nesw-resize | nwse-resize | col-resize | row-resize | all-scroll | zoom-in | zoom-out | grab | grabbing如何獲得給定CSS屬性的所有允許值的數組?

,我需要把它們都(禁止url也許)在JS數組。

問題是,如何創建這樣一個數組? OFc我可以硬編碼它,但如果在將來添加另一個允許的值,或者值被棄用或刪除......那麼,有沒有任何方式提供的語言來獲得這樣一個數組?

此外,當然,從一些像MDN甚至從標準網頁,這將是一個矯枉過正的文件站點獲取此。

+1

只有真正的方法是需要維護的列表。 – epascarello

+0

不,據我所知,沒有辦法獲取一個樣式的有效值列表,你必須用列表硬編碼 – adeneo

+1

看看這裏:https://stackoverflow.com/questions/11219691/list-of-all-css-properties-and-allowed-values – Woodrow

回答

2

不幸的是,唯一的辦法是硬編碼或刮網頁。 JavaScript沒有任何允許這樣的東西的原生函數。

需要記住的是,許多屬性,如height,width等接受任何數量的值。

1

不知道你是否使用PHP,但這裏有一種方法可以抓取一個具有此信息的網頁,以獲取每個CSS屬性的值。很明顯,您可能想要從網站獲得許可,所以您不是通過訪問屬性頁來敲擊他們的服務器,因爲您可以看到我只限於下面的10個結果。使用「ob」功能,不知道它是否是最豪華的解決方案。

<?php 
ini_set('max_execution_time', 600); 
ob_end_clean(); 
ob_implicit_flush(true); 
libxml_use_internal_errors(true); 

function getValuesForElement($element) { 
    $valueArray = []; 
    try { 
     $dom = new DOMDocument(); 
     $dom->prevservWhiteSpace = false; 
     $dom->loadHTMLFile('http://css-infos.net/property/' . $element); 
     $data = $dom->getElementsByTagName('code'); 
     foreach($data as $css) { 
      $val = preg_replace("/\s+/S", "", $css->nodeValue); 
      if(!empty($val)) { 
       $valueArray[] = $val; 
      } 
     } 
    } catch(Exception $e) { 

     // Log error.. 

    } 

    return $valueArray; 
} 

function getElements() { 


    try { 
     $i = 0; 
     $elementsArr = []; 
     $dom = new DOMDocument(); 
     $dom->prevservWhiteSpace = false; 
     $dom->loadHTMLFile('http://css-infos.net/'); 
     $data = $dom->getElementsByTagName('li'); 
     foreach($data as $css) { 
      if($i === 10) { 
       break; 
      } 
      $nodeVal = $css->nodeValue; 
      if($nodeVal == "Webkit CSS properties") { 
       continue; 
      } 
      $elementsArr[$nodeVal] = getValuesForElement($nodeVal); 
      echo "getting <strong><em>".$nodeVal."</em></strong> values..\n"; 
      $i++; 
      sleep(1); 
     } 
    } catch(Exception $e) { 

     // Log error.. 

    } 

    print_r($elementsArr); 
} 

echo "<pre>"; 
getElements(); 
die(); 
?> 
相關問題