2012-11-23 34 views
6

thể trùng lặp:
Changing a CSS rule-set from Javascriptsửa đổi một đối tượng quy tắc css với javascript

tôi đã tự hỏi nếu có bất kỳ khả năng để thay đổi tờ khai Css stylesheet mà không đi cho kiểu nội tuyến.

Dưới đây là một ví dụ nhanh:

<style> 
    .box {color:green;} 
    .box:hover {color:blue;} 
</style> 

<div class="box">TEXT</div> 

Điều đó cho một hộp văn bản màu xanh chuyển sang màu xanh bằng văn bản trên di chuột.

Nếu tôi cho kiểu nội tuyến cho màu sắc, hành vi di chuột sẽ bị mất:

<div class="box" style="color:red;">TEXT</box> 

Điều đó cho một hộp văn bản màu đỏ, không có vấn đề gì.

Vì vậy, câu hỏi của tôi là, làm thế nào có thể truy cập và sửa đổi đối tượng khai báo css thay vì ghi đè kiểu với nội tuyến.

Cảm ơn,

Trả lời

14

Bạn có thể sử dụng cssRules trên đối tượng DOM stylesheet tương ứng với kiểu ban đầu của bạn để thay đổi quy tắc của bạn.

var sheet = document.styleSheets[0]; 
var rules = sheet.cssRules || sheet.rules; 

rules[0].style.color = 'red'; 

Lưu ý rằng IE sử dụng rules thay vì cssRules.

Dưới đây là một minh chứng: http://jsfiddle.net/8Mnsf/1/

+0

Chính xác những gì tôi đang tìm kiếm. Cảm ơn gợi ý. – jonBreizh

+0

Điều này là tốt. Tôi tự hỏi nếu tôi có thể nhắm mục tiêu các bộ quy tắc cụ thể mà không tham khảo vị trí chỉ mục của nó. – Musixauce3000

+0

@ Musixauce3000 * Làm gì * bạn muốn nhắm mục tiêu quy tắc được đặt bởi? –

4

Chỉ cần xác định lớp học của bạn và chỉ định/xóa lớp học thành các phần tử HTML bằng javascript.

Chỉ định kiểu trực tiếp cho một phần tử, có mức độ ưu tiên cao nhất, Nó sẽ ghi đè tất cả các quy tắc CSS khác.

EDIT:

bạn có thể muốn sử dụng tài sản cssText

xem ví dụ ở đây cssText property

+0

Đối với điều này tôi sẽ cần phải biết những gì thay đổi phong cách sẽ trông giống như trước. Điều gì xảy ra nếu kiểu cơ sở dựa trên đầu vào của người dùng? Đối với giải pháp của bạn, tôi sẽ cần phải tạo một lớp css mới trên bay, mà chỉ là một cách khác nhau để xem các vấn đề stylesheet truy cập – jonBreizh

+0

Tôi cập nhật câu trả lời một chút, kiểm tra tài sản cssText –

+0

Cảm ơn nhưng vẫn dựa trên javascript/inline chỉnh sửa kiểu dáng: đọc nhanh csstext là một phần của giải pháp chỉnh sửa biểu định kiểu – jonBreizh

Các vấn đề liên quan