2013-08-26 19 views
6

Her hücrenin tıklanabilir bir HTML tablosu oluşturmak istiyorum ve bir hücreye tıklandığında hücre içinde tek bir div kenarlık ekler. div 'un kenarlıklarını, tabloyu veya hücrelerini yeniden boyutlandırmadan içerdiği td'un mevcut sınırları içinde tamamen var olmasını istiyorum. Bunun doğru bir şekilde gerçekleşmesini sağlayamıyorum.İç kenarlık oluşturmak için kutu boyutlandırmayı kullanma

Bu previous question aynı sorunu ele alıyor ve kutu boyutlandırma CSS seçenekleri hakkında bazı makalelere işaret ediyor. Bunu başarılı olmadan uygulamaya çalıştığım bir keman var: http://jsfiddle.net/YsAGh/3/.

* { 
    box-sizing:border-box; 
    -moz-box-sizing:border-box; 
    -webkit-box-sizing:border-box; 
} 


<table> 
    <tr> 
    <td><div>1</div></td> 
    <td><div>2</div></td> 
    <td><div>3</div></td> 
    </tr> 
    .... 
</table> 

Şu anda ne olduğu aşağıdadır. Sınır, 'un div sınırına uygun olarak büyümesini sağlar.

I want the red border to appear without resizing the td

Nasıl bu içeren tabloyu etkilemeden div sınırını katabilir?

+3

basitçe ('.unselected' sınıfa bir kenarlık eklemek yani' .unselected Could Bkz {border: 2px solid sarı;} 'O zamandan beri cevap olarak sokmayacağım. Sorunuzu yanıtlamıyor, sadece bir hack çözümü sunuyor – kunalbhat

+0

Hmm, tıklama işlevinde hücreyi yeniden boyutlandırmak için jQuery'yi kullanmak isterim, ancak bu da bir korsanlık olarak düşünülebilir ... ancak @ kunalbhat's Cevap çok daha zarif bir çözüm olurdu ve çok kolay: http://jsfiddle.net/YsAGh/4/ – ChrisW

+0

Bu, sorunu çözmeyecek, ancak en son düzeltilmemiş kuralı koymanız önemlidir. e.g.' * {- webkit-box boyutlandırma: border-box; -moz-box boyutlandırma: border-box; kutu boyutlandırma: sınır kutusu;} '. Bu şekilde, tarayıcı ilk önce doğru/bitmiş olan düzeltilmemiş sürümü kullanmaya çalışacak ve ardından uygulanmadığı takdirde öneki/geliştirme sürümüne geri dönecektir. – tw16

cevap

1

JSFiddle adresime bakın.

Sen hücrelere bir genişlik/yükseklik sağlamak için gereken

:

td { 
    // ... 
    width:33.3%; 
    height:33.3%; 
} 
1

Nasıl içerideki bir kutu-gölge kullanımı hakkında?

.selected { 
    box-shadow: inset 0px 0px 0px 2px red; 
} 
+1

Dikkat edin, bu özellik [IE8 ile uyumlu değil] (http://caniuse.com/css-boxshadow) (ve Windows XP) – glautrou

+0

Ie8 kesinlikle kesinlikle bir şey fantezi izin vermez habersiz hiçbir şey fantezi – iConnor

+0

Neyse ki bu bir -house uygulaması ve IE9 + veya en son Firefox veya Chrome varsayabiliriz. –

1

Tamam, görmeyeli burada yorumlarında benim yanıt için bazı destek bir cevap :) olarak

Presize .unselected devlete sarı kenarına hidden ekleyerek cep :

CSS

.unselected { 
    background-color: yellow; 
    border: 2px solid yellow; // Presize with this yellow border 
} 

div { 
    .. 
    line-height: 1; // Add line-height to regulate size (optional) 
} 

Codepen example.

0

Artan yüksekliği önlemek için, hücre genişliğini venumaralı küçük padding genişliğini düzeltmek için table-layout'u kullanın.

table { 
    table-layout: fixed; 
} 
.selected { 
    padding: 1px; 
} 

JSFiddle

İlgili konular