Перезазначення та скидання стилю CSS: автоматичний або жоден не працює


130

Я хотів би замінити наступний стиль CSS, визначений для всіх таблиць:

table {
        font-size: 12px;
        width: 100%;
        min-width: 400px;
        display:inline-table;
    }

У мене є конкретна таблиця з класом, що називається 'other'.
Нарешті прикраса столу має виглядати так:

table.other {
    font-size: 12px;
}

тому я повинен видалити 3 властивості: width, min-widthіdisplay

Я намагався скинути noneабо auto, але не допомогло, я маю на увазі такі випадки:

table.other {
    width: auto;
    min-width: auto;
    display:auto;
}
table.other {
    width: none;
    min-width: none;
    display:none;
}

Відповіді:


195

Я вважаю, що причина, коли перший набір властивостей не буде працювати, полягає в тому, що autoзначення для displayцього немає , тому властивість слід ігнорувати. У цьому випадку inline-tableвсе одно набуде чинності, і як widthце не стосується inlineелементів, цей набір властивостей нічого не зробить.

Другий набір властивостей просто приховає таблицю, тому що саме display: noneдля цього потрібно.

Спробуйте скинути його tableзамість:

table.other {
    width: auto;
    min-width: 0;
    display: table;
}

Редагувати: min-width за замовчуванням 0, неauto


дивно, я дивлюся з firebug - min-width не було перекрито авто
— sergionni

6
@sergionni О так, я забув - min-widthмає значення за замовчуванням 0- reference.sitepoint.com/css/min-width
— Yi Jiang

Я ще раз зазирнув до firebug, є також проблема, що там є вкладені таблиці, тому переосмислення слід застосувати до всієї ієрархії
— sergionni

1
@sergionni Можна зробити це, додавши table.other tableдо селектора, який використовується для скидання властивостей
— Yi Jiang

1
width: autoколи все, що я хотів перемогти, було width: 100%- Дякую
— Мередіт,

18

"ніхто" не робить те, що ви вважаєте, що це робить. Щоб "очистити" властивість CSS, потрібно встановити його за замовчуванням, яке визначено стандартом CSS. Таким чином, ви повинні шукати параметри за замовчуванням у вашому улюбленому довіднику.

table.other {
    width: auto;
    min-width: 0;
    display:table;
}

10
Set min-width: inherit /* Reset the min-width */

Спробуйте це. Це спрацює.


2
Це має бути прийнятою відповіддю. min-width: 0не робить те ж саме
— v010dya

Правильно, але що робити, якщо батько має min-width? ви отримаєте це замість реального дефолту.
— adi518

7

Типовою displayвластивістю для таблиці є display:table;. Єдине інше корисне значення - це inline-table. Усі інші displayзначення недійсні для елементів таблиці.

Немає autoможливості повернути його до типового, хоча якщо ви працюєте в Javascript, ви можете встановити його в порожній рядок, що зробить трюк.

width:auto;є дійсним, але не є типовим. Ширина за замовчуванням для таблиці є 100%, тоді width:auto;як елемент змусить зайняти стільки ширини, скільки потрібно.

min-width:auto;заборонено. Якщо ви встановите min-width, воно повинно мати значення, але встановити його в нуль, ймовірно, так само добре, як і скинути його до замовчування.


цікава ідея про JS. схоже, що мені потрібно. І спершу спробую з CSS.
— сергіоні

1

Ну, display: none;не буде відображати таблицю взагалі, спробуйте display: inline-block;з оголошеннями про ширину та мінімальну ширину, що залишаються "авто".


0

Я в кінцевому підсумку використовував Javascript для вдосконалення всього.

Моя скрипка JS: https://jsfiddle.net/QEpJH/612/

HTML:

<div class="container">
    <img src="http://placekitten.com/240/300">
</div>

<h3 style="clear: both;">Full Size Image - For Reference</h3>
<img src="http://placekitten.com/240/300">

CSS:

.container {
    background-color:#000;
    width:100px;
    height:200px;

    display:flex;
    justify-content:center;
    align-items:center;
    overflow:hidden;

}

JS:

$(".container").each(function(){
    var divH = $(this).height()
    var divW = $(this).width()
    var imgH = $(this).children("img").height();
    var imgW = $(this).children("img").width();

    if ( (imgW/imgH) < (divW/divH)) { 
        $(this).addClass("1");
        var newW = $(this).width();
        var newH = (newW/imgW) * imgH;
        $(this).children("img").width(newW); 
        $(this).children("img").height(newH); 
    } else {
        $(this).addClass("2");
        var newH = $(this).height();
        var newW = (newH/imgH) * imgW;
        $(this).children("img").width(newW); 
        $(this).children("img").height(newH); 
    }
})

0

Найкращий спосіб повернути налаштування мінімальної ширини:

min-width: 0;
min-width: unset;

unset є в специфікації, але деякі веб-переглядачі (IE 10) не поважають його, тому 0 в більшості випадків - це хороший результат . мінімальна ширина: 0;

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.