แยกเฉพาะ css ที่ใช้ในเพจเฉพาะ


86

สมมติว่าคุณมีไซต์ที่สร้างขึ้นแบบไดนามิกซึ่งมีผู้คนมากเกินไปทั้งในอดีตและปัจจุบันและตอนนี้คุณมีชุดสไตล์ชีตที่ใช้ร่วมกันซึ่งมี CSS มากกว่า 20,000 บรรทัด ไม่มีการจัดระเบียบเลยมีตัวเลือกคลาสและตัวเลือกตามรหัส แต่ยังมีตัวเลือกตามแท็กมากเกินไป แล้วบอกว่าคุณมีเทมเพลต 100 แบบที่ใช้สไตล์เหล่านี้ผ่านตัวควบคุมบางตัว

มีเครื่องมือบางอย่างที่ใช้งานได้เหมือน Firebug หรือไม่ที่คุณสามารถชี้ไปที่ url และจะกำหนดตัวเลือก CSS ที่เกี่ยวข้องทั้งหมดสำหรับหน้านั้นและถ่ายโอนข้อมูลไปยังไฟล์หรือไม่ โดยพื้นฐานแล้ววิธีการแยกสไตล์ชีทที่แชร์บนหน้าทีละหน้า


คำตอบ:


17

ฉันเคยใช้ Dust-Me Selectors มาก่อนซึ่งเป็นปลั๊กอินของ Firefox ใช้งานง่ายและหลากหลายเนื่องจากมีการเก็บรักษารายการรวมไว้ในหลาย ๆ หน้าซึ่งใช้ค่า CSS

ข้อเสียคือฉันไม่สามารถทำให้มันสไปเดอร์ทั้งไซต์โดยอัตโนมัติได้ดังนั้นฉันจึงใช้มันในหน้าหลัก / เทมเพลตของไซต์ของฉันเท่านั้น มันมีประโยชน์มาก

http://www.sitepoint.com/dustmeselectors/

https://addons.mozilla.org/en-US/firefox/addon/dust-me-selectors/

ตรงกันข้ามกับความคิดเห็นด้านบน Dust-Me Selectors 2.2 เข้ากันได้กับ Firefox 3.6 (ฉันเพิ่งติดตั้ง)


2
มีวิธีส่งออกสำเนาของไฟล์ css ที่ระบุโดยลบสิ่งที่ไม่ได้ใช้ออกทั้งหมดหรือไม่?
rraallvv

1
@rraallw ครับ. นี่เป็นเครื่องมือเดียวที่ใช้ได้ผลและยังคงเคารพการสืบค้นของสื่อ มันมีจุดบกพร่องที่น่ารำคาญซึ่งมันทิ้งไฟล์ CSS ที่ส่งออกด้วยคำว่า "ไม่ได้กำหนด" แต่การค้นหาอย่างรวดเร็ว 'n แทนที่จะแก้ไขได้ เมื่อเครื่องมือทำงานให้กดปุ่ม "clean" บนแท็บ "Unused selectors" สำหรับแต่ละแผ่นงานไฟล์ มันจะสร้าง CSS ที่คุณสามารถส่งออกได้
Eric L.

2
ไม่มีหน้า Add-on แล้ว และลิงก์แรกจะเปลี่ยนเส้นทางไปยังลิงก์ที่สอง
Marian

56

มอบเครื่องมือที่ดีที่สุดที่ทำสิ่งที่คุณต้องการได้จริงโดยรับเฉพาะ CSS ที่ใช้บนหน้าเว็บและช่วยให้คุณคัดลอกไปยังคลิปบอร์ดของคุณคือCSSส่วนขยาย Chrome ที่ใช้

ตัวอย่างรูปภาพสวย ๆ

ใส่คำอธิบายภาพที่นี่


เครื่องมือที่ยอดเยี่ยม ... แต่ดูเหมือนว่าจะไม่สนใจคำค้นหาของสื่อ :(
Eric L.

8
ฉันได้อัปเดตส่วนขยายเป็นแบบสอบถามสื่อที่รองรับแล้ว นอกจากนี้การกำหนดคีย์เฟรม / ฟอนต์ใบหน้าที่ใช้แล้วแม้กระทั่งการแฮ็ก IE บางตัวก็รองรับแล้ว
PaintyJoy

1
รองรับการสืบค้นสื่อตอนนี้
atheaos

2
นี่มันเยี่ยมมาก คุณยังสามารถเลือกองค์ประกอบใน DOM และจะให้ CSS ที่ใช้สำหรับคอนเทนเนอร์นั้น ๆ
webnoob

2
อ่าสงบมากเมื่อคุณพบเครื่องมือที่เหมาะสมสำหรับปัญหาของคุณ :)
sinaza

10

สิ่งเหล่านี้ดูมีแนวโน้ม:

  • Unused-CSS.com - บริการที่สไปเดอร์เว็บไซต์ของคุณและส่งอีเมลถึงผลลัพธ์
  • การใช้ CSS - Firebug addon

1
ฉันคิดว่าการใช้งาน CSS ทำงานได้ดีที่สุด โดยเฉพาะอย่างยิ่งถ้าคุณมี HTTPS
Ben_Coding

10

(ไม่ใช่สำหรับ firefox แต่อาจช่วยใครบางคนได้)

หากคุณกำลังทำงานกับ chrome คุณสามารถใช้ส่วนขยายนี้:

CSS ลบและรวม ( https://chrome.google.com/webstore/detail/css-remove-and-combine/cdfmaaeapjmacolkojefhfollmphonoh )

  • ให้คุณดาวน์โหลด css รวมกับสไตล์ที่ใช้ทั้งหมด
  • แสดงรูปแบบที่ไม่ได้ใช้ในหน้าต่างป๊อปอัป
  • รวมถึงรูปแบบที่สร้างขึ้น

เครื่องมือที่ยอดเยี่ยม แต่ไม่สนใจ CSS แบบสอบถามสื่อ หลังจากรวมเข้าด้วยกันไซต์ของฉันจะไม่ตอบสนองอีกต่อไป
Jonas T

"CSS ลบและรวม" ดูเหมือนจะล้าสมัยใช้งานไม่ได้บน Chrome 67
อีก

4

ฉันเจอUncss-Online - เซิร์ฟเวอร์ที่ไม่เป็นทางการสะดวกมากสำหรับการทดสอบหรือการใช้งานครั้งเดียว! ฉันคิดว่ามันเป็นเครื่องมือที่ดีที่สุดที่ฉันเจอ

UnCSS เป็นเครื่องมือที่ลบ CSS ที่ไม่ได้ใช้ออกจากสไตล์ชีตของคุณ ใช้งานได้กับไฟล์หลายไฟล์และรองรับ CSS ที่แทรกด้วย Javascript สามารถใช้ในลักษณะนี้:

  • คัดลอกและวาง HTML และ CSS ของคุณลงในช่องที่มีให้
  • คลิกปุ่ม
  • รอให้เวทมนตร์เกิดขึ้น
  • CSS ที่ไม่ได้ใช้หายไปใช้ส่วนที่เหลือ!

คุณสามารถตรวจสอบหน้า Githubสำหรับวิธีขั้นสูงอื่น ๆ ในการใช้เครื่องมือนี้


3

SnappySnippet

มีโฆษณาโอเพ่นซอร์สของ chrome ชื่อSnappySnippetฉันพบว่ามันดีกว่าที่อื่นมากเพียงแค่ขยายเครื่องมือสำหรับนักพัฒนาที่มีอยู่แล้วใน chrome คุณสามารถแยกได้เพียงส่วนเดียวของหน้าเท่านั้นที่จะ css ที่เกี่ยวข้องทั้งหมด ดูที่โพสต์ stackoverflow นี้


1
ใช่ แต่มันเปลี่ยนชื่อคลาสเป็นรหัสทั่วไปซึ่งไม่เป็นประโยชน์มากนัก
Shishir Arora

3

นี่คือวิธีแก้ปัญหาของฉันโดยใช้ JavaScript:

    var css = [];
    for (var i=0; i<document.styleSheets.length; i++)
    {
        var sheet = document.styleSheets[i];
        var rules = ('cssRules' in sheet)? sheet.cssRules : sheet.rules;
        if (rules)
        {
            css.push('\n/* Stylesheet : '+(sheet.href||'[inline styles]')+' */');
            for (var j=0; j<rules.length; j++)
            {
                var rule = rules[j];
                if ('cssText' in rule)
                    css.push(rule.cssText);
                else
                    css.push(rule.selectorText+' {\n'+rule.style.cssText+'\n}\n');
            }
        }
    }
    var cssInline = css.join('\n')+'\n';

ในตอนท้ายcssInlineคือรายการข้อความของแผ่นเหล็กทั้งหมดของหน้าและเนื้อหา

ตัวอย่าง:

    /* Stylesheet : http://example.com/cache/css/javascript.css */
    .javascript .de1, .javascript .de2 { -webkit-user-select: text; padding: 0px 5px; vertical-align: top; color: rgb(0, 0, 0); border-left-width: 1px; border-left-style: solid; border-left-color: rgb(204, 204, 204); margin: 0px 0px 0px -7px; position: relative; background: rgb(255, 255, 255); }
    .javascript { color: rgb(172, 172, 172); }
    .javascript .imp { font-weight: bold; color: red; }

    /* Stylesheet : http://example.com/i/main_master.css */
    html { }
    body { color: rgb(24, 24, 24); font-family: 'segoe ui', 'trebuchet MS', 'Lucida Sans Unicode', 'Lucida Sans', sans-serif; font-size: 1em; line-height: 1.5em; margin: 0px; padding: 0px; background: url(http://pastebin.com/i/bg.jpg); }
    a { color: rgb(204, 0, 51); text-decoration: none; }
    a:hover { color: rgb(153, 153, 153); text-decoration: none; }
    .icon24 { height: 24px; vertical-align: middle; width: 24px; margin: 0px 4px 0px 10px; }
    #header { border-radius: 0px 0px 6px 6px; color: rgb(255, 255, 255); background-color: rgb(2, 56, 89); }
    #super_frame { min-width: 1100px; width: 1200px; margin: 0px auto; }
    #monster_frame { -webkit-box-shadow: rgb(204, 204, 204) 0px 0px 10px 5px; box-shadow: rgb(204, 204, 204) 0px 0px 10px 5px; border-radius: 5px; border: 1px solid rgb(204, 204, 204); margin: 0px; background-color: rgb(255, 255, 255); }
    #header a { color: rgb(255, 255, 255); }
    #menu_2 { height: 290px; }

    /* Stylesheet : [inline styles] */
    .hidden { display: none; }

จะดีมากถ้าสิ่งนี้สามารถใช้ css จากไซต์ภายนอกกับเพจของฉันเองได้ ไม่รู้จะทำยังไง ...
johny why

2
  • uncss: ค้นหา CSS ที่ไม่ได้ใช้ - เครื่องมือ cli ใช้ phantomjs และเรียกใช้ JS บนหน้าสามารถใช้กับ URL ได้
  • grunt-uncss - ใช้ได้กับไฟล์คงที่เท่านั้น
  • ( css ที่สำคัญ - แยก CSS สำหรับองค์ประกอบที่มองเห็นได้ในหน้าต่างเบราว์เซอร์)

2

ตรวจสอบPurifyCSSและสิ่งนี้สำหรับผู้ที่สามารถจัดการ CLI หรือ Gulp / Grunt / Webpack

คุณสามารถลบสไตล์ที่ไม่ได้ใช้ออกจากเพจเดียวหรือหลายเพจหรือจากโปรเจ็กต์ทั้งหมดแม้ว่าคลาสจะถูกแทรกโดยจาวาสคริปต์ก็ตาม

หากคุณสามารถ google ได้มีแหล่งข้อมูลมากมายที่คุณสามารถเรียนรู้เกี่ยวกับ PurifyCSS


1

นี้ส่วนขยายของ Firefox อาจจะแก้ปัญหาของคุณฝุ่น-Me Selectors นอกจากนี้ยังมีแอปเดสก์ท็อปเล็ก ๆ ที่เรียกว่า CssCleaner หรือ CssHelper แต่ฉันไม่พบลิงก์ไปยัง ... (เพิ่งดาวน์โหลดที่นี่ที่เครื่องของฉันเมื่อนานมาแล้วสำหรับงานที่คล้ายกัน)


1

หากคุณกำลังจัดการกับหน้าเดียวคุณยังสามารถใช้ bookmarklet ของฉันเพื่อดึงเฉพาะ CSS ที่หน้าเว็บใช้จริงได้อย่างรวดเร็ว:

  1. ไปที่นี่ (หากลิงก์นี้เสียคุณสามารถรับได้จากpastebin )
  2. ลากปุ่มขนาดใหญ่ใต้ "ดาวน์โหลด Bookmarklet" ไปยังแถบเครื่องมือบุ๊กมาร์กของคุณ

แค่นั้นแหละ. ตอนนี้เมื่อใดก็ตามที่คุณต้องการห่อหุ้มเพจแบบคงที่ (เช่นเพื่อให้เป็นแบบพกพาหรือหากคุณตั้งใจจะให้บริการจาก iframe ของตัวเอง) เพียงคลิกที่บุ๊กมาร์กและจะแสดง CSS ที่ใช้ทั้งหมดในหน้าปัจจุบันในการซ้อนทับ คลิกที่เงาเพื่อปิดภาพซ้อนทับ

สิ่งที่ดีอย่างหนึ่งของโซลูชันนี้คือรองรับเพจที่ตอบสนองเนื่องจากมีการแยกคิวรีสื่อด้วย เป็นโบนัสแบบสอบถามสื่อจัดเรียงตามความจำเพาะของขนาดวิวพอร์ต (เช่น@media (max-width: 767px)จะตามมา @media (max-width: 1023px) )

หากมีความต้องการฉันสามารถเพิ่มตัวเลือกเพื่อลดขนาด CSS ที่สร้างขึ้นได้ เนื่องจากฉันใช้ bookmarklet นี้เพื่อความต้องการของตัวเองเท่านั้นจึงไม่ได้รับการทดสอบอย่างกว้างขวางดังนั้นโปรดรายงานปัญหาใด ๆ ในความคิดเห็น

หมายเหตุ: เพื่อให้ bookmarklet ทำงานกับไฟล์ในเครื่องใน Chrome ให้เพิ่ม--allow-file-access-from-filesไปที่เป้าหมายทางลัดของ Chrome ตัวอย่าง:

"C:\Program Files\Google\Chrome\Application\chrome.exe" --allow-file-access-from-files

1

ลองใช้เครื่องมือนี้ซึ่งเป็นเพียงสคริปต์ js ง่ายๆ https://github.com/shashwatsahai/CSSExtractor/ เครื่องมือนี้ช่วยในการรับ CSS จากหน้าที่ระบุแหล่งที่มาทั้งหมดสำหรับรูปแบบที่ใช้งานและบันทึกลงใน JSON พร้อมแหล่งที่มาเป็น คีย์และกฎเป็นค่า มันโหลด CSS ทั้งหมดจากลิงค์ href และบอกสไตล์ทั้งหมดที่ใช้จากพวกเขา คุณสามารถบันทึกผลลัพธ์ในไฟล์ JSON ด้วยชื่อใดก็ได้


0

อืม .. ฉันจะโยนความดุร้ายไปที่สิ่งนี้โดยการแยกตัวเลือก CSS ต่างๆโดยใช้การแยกวิเคราะห์ไฟล์ CSS ริมเซิร์ฟเวอร์จากนั้นเรียกใช้แต่ละไฟล์เหล่านี้เป็นตัวเลือก jQuery ภายในเบราว์เซอร์ ไม่สวยหรูมาก แต่น่าทำงาน?


แต่มีเครื่องมือที่มีอยู่สำหรับทำสิ่งนี้หรือไม่?
Roger Halliburton

0

ณ เดือนกันยายน 2020 คำถามนี้มีอายุเกือบ 10 ปี โซลูชันที่ให้มาส่วนใหญ่ใช้งานไม่ได้อีกต่อไปหรือโครงการที่เชื่อมโยงหายไป

อย่างไรก็ตามคำถามยังคงมีความเกี่ยวข้องอย่างยิ่งเนื่องจากตอนนี้ Google ใช้ความเร็วของหน้าเป็นหนึ่งในเมตริกการจัดลำดับความสำคัญ

หลังจากทำการวิจัยจำนวนมากในลิงค์ทั้งหมดที่แสดงฉันพบpurgecss.com purgecss.comดูเหมือนว่าจะเป็นตัวเลือกที่ดีที่สุดในการล้าง CSS ที่ไม่ได้ใช้ในเว็บแอป / SPA สมัยใหม่โดยใช้ Angular, React, Vue และอื่น ๆ นอกจากนี้ยังมีการสร้างการผสานรวมกับ PostCSS, Webpack, Grunt และ Gulp

นอกจากนี้UnCSSยังคงได้รับการดูแล มันทรงพลังพอ ๆ กับ PurgeCSS แต่ไม่รวมอยู่ในกระบวนการสร้างหรือแอพ javascript แบบหน้าเดียว


-1

คุณยังสามารถใช้http://getcssusedinapage.comเพื่อรับ CSS ที่ใช้ในเพจ ฟรีรวดเร็วและให้รายละเอียดย้อนกลับมากมายพร้อมกับโค้ด CSS ที่ย่อขนาดและปรับให้เหมาะสมซึ่งคุณสามารถคัดลอก + วางในเว็บไซต์ของคุณได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.