2010-04-27 30 views
33

Tôi có một biểu định kiểu và nhiều kiểu có cùng màu viền (#CCCCCC để chính xác).Tôi làm cách nào để sử dụng lại màu trong biểu định kiểu?

Có cách nào để xác định một số loại biến và tái sử dụng đó, vì vậy thay vì gõ #CCCCCC hơn và hơn, tôi có thể gõ:

border: 1px solid $bordercolor; 

T.B. Tôi đang sử dụng ASP.NET MVC.

+0

Không phải là tôi biết, nhưng bạn có thể tạo CSS của mình từ trang .NET. (Thêm câu trả lời dưới đây với một chi tiết hơn) – CaffGeek

+0

+1 Câu hỏi hay. Tôi có vấn đề này như là tốt. –

+0

Không chắc chắn nếu nó được áp dụng (và tôi đã hầu như không sử dụng nó), nhưng Sass (http://sass-lang.com/) dường như bao gồm này. Nó được viết bằng Ruby (tôi nghĩ), nhưng có * là * IronRuby bây giờ ... –

Trả lời

10

Không phải là tôi biết, nhưng bạn có thể tạo CSS của bạn từ một trang .NET.

Sau đó, gọi nó với

Và StyleSheet.aspx sẽ giống như

<%@ Page Language="C#" %> 
H1 
{ 
    background-color:<%= MyColourVariable %>; 
} 

EDIT: Tuy nhiên, hôm nay tôi sẽ đề nghị sử dụng LESS hoặc SASS

+1

Tự động tạo tệp css có ngăn không cho tệp được lưu vào bộ nhớ cache không? – Jens

+1

Jens, no. Lưu vào bộ nhớ đệm phụ thuộc vào loại mime của nội dung được phân phát và thuộc tính cụ thể trên nội dung mà trình duyệt trông, khác nhau tùy theo trình duyệt, để xác định xem bộ nhớ cache có bị hết dữ liệu hay không. –

+1

Và bạn luôn có thể thêm bộ nhớ đệm trang nếu bạn muốn kiểm soát nó ở phía máy chủ (vì vậy nó không được tạo lại tại máy chủ mỗi lần) http://support.microsoft.com/kb/308375 – CaffGeek

0

Bạn có thể đặt kiểu đường viền cho thẻ cha. Ví dụ: nếu mọi phần tử trong #content của bạn sử dụng thuộc tính đường viền này, bạn có thể áp dụng kiểu đường viền mong muốn cho #content chính nó.

0

Mở rộng phong cách trong màu sắc được xác định

LE: xem mẫu từ KennyTM

+0

-1: không có nội dung thực sự. – ANeves

24
.classA, .classB, .classC { 
    border-color: #CCC; 
} 

.classA { 
    border-width: 1px; 
    border-style: solid; 
} 

... 

Nhưng bạn có thể' t sử dụng cú pháp ngắn để xác định đường viền nữa.

+0

Tốt, tôi không thực sự sử dụng điều đó, đặt bộ chọn nhiều hơn một lần trong biểu định kiểu. Tôi thấy điều này là mã hóa css ngược: không nói "classA là màu đường viền và màu", nhưng nói "màu đường viền này được áp dụng cho ClassA và ClassB và phông chữ được áp dụng cho Lớp C". Rất đẹp. – Michel

+0

Tôi thường xuyên làm điều này, nếu tôi không muốn biên giới ở tất cả các bên, tức là 'chiều rộng đường viền: 1px 0; border-style: solid; border-color: # ccc' – DisgruntledGoat

11

Một phần tử có thể được gán nhiều lớp. Vì vậy, bạn có thể tạo ra một phong cách định nghĩa bạn đường viền màu và sử dụng nó kết hợp với các lớp khác cho các thuộc tính khác:

.bordercolor { border-color:#CCCCCC; } 

<div class="bordercolor otherstyle"> 
1

Bên cạnh việc tạo ra nó từ một trang NET bạn có thể sử dụng một số loại tiền xử lý. Có những cách sử dụng chung như m4 hoặc CSS cụ thể như LESS.

3

Bạn có thể phân phối CSS dưới dạng tệp php với loại văn bản/css. Sau đó, bạn có thể sử dụng tất cả các biến PHP mà bạn muốn. Điều này làm việc trong mọi trình duyệt. Dưới đây là một ví dụ:

http://mailmarkup.org/mmlorg.php

7

Bạn có thể không thực sự xác định các biến CSS, nhưng bạn có thể loại làm những gì bạn đang theo đuổi một số cách. Đầu tiên, bạn có thể áp dụng nhiều lớp cho phần tử của bạn và chỉ giữ màu trong lớp riêng của nó.

.myBorderColor { border-color: #000000; } 
.myOtherClass { font-weight: bold; } 

<div class="myBorderColor myOtherClass">content</div> 

Cách khác là thực sự xếp tầng kiểu của bạn để áp dụng hơn 1 khối.

div.a { font-weight: bold; } 
div.b { color: #cccccc; } 

div.a div.b { border-color: #000000; } 

Bằng cách đó bạn vẫn đang kiểm soát màu của mình từ 1 vị trí.

+3

Chỉ cần đảm bảo rằng bạn không tuân theo phong cách mà nhà thiết kế web của chúng tôi sử dụng và đặt tên cho các lớp "fontbold" và "borderblack"/"bordergray"/"borderblue" ... Đó thực sự là kiểu xấu các tên nên cho biết cách nó được sử dụng, không phải như thế nào. – dbemerlin

+0

Sử dụng lớp '.myBorderColor' chính xác là những gì dbmerlin đang đề cập đến. – ANeves

+0

@dbemerlin tôi nghĩ rằng khi tôi bắt đầu áp dụng kỹ thuật này, tôi cũng sẽ bị cám dỗ khi sử dụng các tên như borderblue và borderblack, vì tôi nghĩ sẽ dễ dàng khi bắt đầu sử dụng các tên này thay cho các tên mô tả hơn. Nhưng bạn nói đúng, đó không phải là cách để đi. – Michel

4

Tôi nghĩ bạn có thể đang đề cập đến CSS variables. Thật không may họ không được hỗ trợ tốt.

+0

Điều đó sẽ tuyệt vời * nếu * nó được hỗ trợ ... –

+0

Có! nhưng thực sự, Thật không may ... – Michel

2

Một số người đã thực hiện HttpHandlers thêm hỗ trợ biến cho CSS.Về cơ bản, HttpHandler đảm nhiệm thay thế các biến bằng các giá trị của chúng trước khi máy khách nhìn thấy CSS. Ví dụ như:

Điều này chắc chắn sẽ làm việc. Tôi đã không thử nó trong bất kỳ ứng dụng của tôi vì vậy tôi không thể nói chuyện với ý nghĩa hiệu suất.

8

Bạn cũng có thể sử dụng CSS "cấp cao hơn". SassLess cả hai biến phiếu mua hàng. Chúng hoạt động bằng cách viết bằng một ngôn ngữ là một siêu của CSS và sau đó bạn biên dịch nó thành CSS khi bạn đang thử nghiệm/triển khai. Có móc cho RoR cho cả hai, có thể có một cho asp.net.

+0

tuyệt vời. Ít trông rất hứa hẹn. – Michel

+1

Tôi nên đề cập rằng Sass có cú pháp thay thế tương tự như cú pháp của CSS. –

1

Tôi cũng đã suy nghĩ về mẫu T4. Đó là Visual Studio chỉ tôi nghĩ, vì vậy nó không phải là cách chung chung nhất để đi, nhưng tôi nghĩ rằng tôi muốn chia sẻ nó.

<#@ template inherits="Microsoft.VisualStudio.TextTemplating.VSHost.ModelingTextTransformation" language="C#v3.5" debug="true" hostSpecific="true" #> 
<#@ output extension=".css" #> 
<# string font = " font-family: Verdana, Helvetica;\n\tfont-size: 11px;";#> 

body { 
    <#= font #> 
} 
table.Bid { 
    background-color:red; 
    <#= font #> 
} 

này tạo ra một tập tin test.css với nội dung này:

body { 
    font-family: Verdana, Helvetica; 
    font-size: 11px; 
} 
table.Bid { 
    background-color:red; 
    font-family: Verdana, Helvetica; 
    font-size: 11px; 
} 
Các vấn đề liên quan