2011-07-13 22 views
6

Có cách để đặt độ rộng tab PRE trong Firefox và Opera, nhưng không có cách nào nổi tiếng để thực hiện việc này trong IE hoặc Chrome và mã được gắn thẻ cứng trong thẻ PRE bị như vậy.Đặt chiều rộng thẻ PRE trong các trình duyệt web khác nhau

pre { 
    white-space: -moz-pre-wrap; 
    white-space: -pre-wrap; 
    white-space: -o-pre-wrap; 
    white-space: pre-wrap; 
    word-wrap: break-word; 
    -moz-tab-size: 1.5em; 
    -o-tab-size: 1.5em; 

    margin: 1em 0 0 0; 
    padding: 1em 1em 1em 1em; 
    width: 65%; 
} 
+3

Tại sao không phải là này và ngăn chặn dọc trung tầm thường trong CSS3? Bố cục cơ bản hữu ích hơn nhiều so với các góc bo tròn. – mcandre

Trả lời

-1

CSS 3 chữ tính năng tab-size là quá mới (và không gần chuẩn đủ) đã nhìn thấy triển khai rộng cho đến nay (cộng với các tab không phải là rất phổ biến nói chung).

Đối với trường hợp mã có tab cứng, chỉ cần chạy mã thông qua chuyển đổi tab-to-dấu cách trước khi đặt nó trên trang.

bố trí cơ bản được thêm rất nhiều hữu ích hơn góc tròn

Tabs không bao giờ có ý định làm nhiệm vụ bố trí có mục đích chung (và sẽ là hoàn toàn không phù hợp cho điều đó). Có nhiều tính năng bố trí mạnh mẽ hơn được chào hàng cho CSS3 — xem ví dụ Grid và Flexbox trong IE10.

+6

-1: Có nhiều đối số (nếu không nhiều hơn) đối với mã "khoảng cách cứng". –

+2

-1 vì sử dụng các tab để mã hóa và thiết lập kích thước tab trong trình chỉnh sửa yêu thích của bạn sẽ hấp dẫn hơn và thuận tiện hơn so với sử dụng dấu cách. – OneOfOne

3

Theo trang tab-size MDN của, theo đúng định dạng là:

tab-size: 4; 
-moz-tab-size: 4; 
-o-tab-size: 4; 

Javascript dự phòng:

var fix_tab_size = function(pre, size) { 
    if(typeof fix_tab_size.supports === 'undefined') { 
     var bs = document.body.style; 
     fix_tab_size.supports = ('tab-size' in bs || '-o-tab-size' in bs || '-ms-tab-size' in bs || '-moz-tab-size' in bs); 
    } 
    if(!fix_tab_size.supports) { 
     if(typeof pre.each === 'function') { //jquery 
      $('pre').each(function() { 
       var t = $(this); 
       t.html(t.html().replace(/\t/g, new Array(size+1).join(' '))); 
      }); 
     } else if(typeof pre.innerHTML === 'string') { 
      pre.innerHTML = pre.innerHTML.replace(/\t/g, new Array(size+1).join(' ')); 
     } 
    } 
} 
$(function() { 
    fix_tab_size($('pre'),4); 
    //or 
    $.getJSON(src, function(data) { 
     fix_tab_size($data_pre.html(data.code)); //etc 
    }); 
}); 
+0

Rất tiếc Opera sẽ không bao giờ nhìn thấy một kiểu tab theo chiều rộng chuẩn. Yên nghỉ. – ThorSummoner

+0

Tôi không sử dụng Opera, tuy nhiên Opera mới nhất sử dụng Blink, nhánh webkit của Google, vì vậy nó có thể hỗ trợ nó. – OneOfOne

+1

Để làm rõ, tôi có nghĩa là opera dựa trên Pesto, 12.x đã ngừng hỗ trợ chỉ khai báo -o-tab-width. về cơ bản có nghĩa là người dùng Opera của chúng tôi (chủ yếu là trên Linux) sẽ hầu như không bao giờ thấy các kiểu kích thước tab đúng cách, trừ khi các nhà phát triển sao chép ví dụ này và quyết định đưa vào đặc tả cụ thể của opera. – ThorSummoner