CSS: проблема с шириной и дополнением входа в IE

Слишком ленивый для инициализации каждого поля в словаре?Нет проблем:

В Python> 2.3:

from collections import defaultdict

В Python < = 2.3:

def defaultdict(type_):
    class Dict(dict):
        def __getitem__(self, key):
            return self.setdefault(key, type_())
    return Dict()

В любой версии:

d = defaultdict(list)
for stuff in lots_of_stuff:
     d[stuff.name].append(stuff)

ОБНОВЛЕНИЕ:

Спасибо Ken Arnold . Я повторно реализовал более сложную версию defaultdict. Это должно вести себя точно как то в стандартной библиотеке .

def defaultdict(default_factory, *args, **kw):                              

    class defaultdict(dict):

        def __missing__(self, key):
            if default_factory is None:
                raise KeyError(key)
            return self.setdefault(key, default_factory())

        def __getitem__(self, key):
            try:
                return dict.__getitem__(self, key)
            except KeyError:
                return self.__missing__(key)

    return defaultdict(*args, **kw)

5
задан elon 19 December 2013 в 01:06
поделиться

2 ответа

Не считая проблемы с максимальной шириной, IE здесь делает правильные вещи. В блочной модели CSS говорится, что общий размер элемента - это ширина ПЛЮС его отступы, ПЛЮС его поля.

В блочной модели также говорится, что для любого неплавающего элемента уровня блока полный размер элемента (включая все) всегда составляет 100% содержащего его элемента. Вы можете использовать это в своих интересах, задав для ширины поля ввода значение «Авто», а затем явно задав отступы, границу и поля.

Вот небольшой пример (я знаю, что это много разметки, но это немного излишне, чтобы проиллюстрировать суть),

.places_edit_left{ 
  width:250px; 
  overflow:auto;
}

.places_edit_left input {
  padding-right:0px;
  padding-left:10px;  
  margin: 0 0 0 0;
  border:1px solid black;
  width:auto;
  display:block;
  float:none;
}
0
ответ дан 14 December 2019 в 04:44
поделиться
  1. Неправильная блочная модель применяется к IE в режиме совместимости. Следовательно, вам может потребоваться активировать строгий режим. См., Например, http://www.quirksmode.org/css/quirksmode.html

  2. Вы хотите, чтобы входные данные были равны ширине контейнера? Установите ширину явно (250 пикселей - 10 пикселей для заполнения - XX пикселей для границ). Вы хотите, чтобы вход не был шире, чем div? Установите значение переполнения для div как скрытое.

2
ответ дан 14 December 2019 в 04:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: