Как заставить отделение масштабироваться вертикально полностью вниз?

Я обнаружил, что использование метода ЛиIII сработало, но при профилировании оказалось, что он был чрезвычайно медленным. Для разбора 1000 элементов потребовалось 15 секунд. Комментирование кода для добавления отношения превратило 15 секунд в 2 секунды.

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

@property (nonatomic, retain) NSMutableArray* tempItems;
 ....
@synthesize tempItems = _tempItems;
 ....

- (void) addItemsObject:(KDItem *)value 
{
    if (!_tempItems) {
        self.tempItems = [NSMutableArray arrayWithCapacity:500];
    }
    [_tempItems addObject:value];
}

// Call this when you have added all the relationships
- (void) commitRelationships 
{
    if (_tempItems) {
        self.items = [NSOrderedSet orderedSetWithArray:self.tempItems];
        self.tempItems = nil;
    }
}

Я надеюсь, что это поможет кому-то еще!

7
задан Keyframe 2 July 2009 в 16:19
поделиться

6 ответов

Если вам нужна поддержка от IE6 и выше, ответ такой: вы не можете использовать только css.

Существуют разные решения, чтобы действительно масштабировать div или просто сделать так, чтобы он выглядел так :

  1. Вы можете использовать фоновое изображение для серого div (если все, что вам нужно, это фон для полного растяжения)
  2. Вы можете использовать javascript, чтобы вычислить высоту серого div и применить его к blue div

Существует опция ccs с очень большим отступом и столь же большим отрицательным полем, но я не помню, работает ли он для всех браузеров, и я не могу найти статью прямо сейчас.

Изменить: Решение css с большими отступами / отрицательными полями:

В статье говорится о Firefox 1.5 и Safari 2, поэтому я не знаю, работает ли он до сих пор, но вот он .

1
ответ дан 7 December 2019 в 14:37
поделиться

По моему опыту, установка высоты синего DIV на 100% не работает. Единственный раз, когда я хотел, чтобы это был синий DIV с его собственным фоном, чтобы решить эту проблему, вам нужно, чтобы фон серого DIV включал синий фон другого DIV.

1
ответ дан 7 December 2019 в 14:37
поделиться

JavaScript для этого будет ...

<div id="yourDiv" style="background-color: Blue; width: 150px;">
    Hello
</div>

<script type="text/javascript">
    var div = document.getElementById('yourDiv');

    div.style.height = document.body.clientHeight + 'px';
</script>

Изменить:

Проверьте эту ссылку для получения clientHeight в разных браузерах ...

0
ответ дан 7 December 2019 в 14:37
поделиться

Внутри родительского div, если вы установите "float: right" в синем div и поиграете со своим ростом в процентах (height: 100%;), я думаю, вы должен достичь того, о чем вы просите.

Поскольку синий div является потомком вашего серого div, максимальная высота вашего синего div не должна превышать родительский div. Если я что-то здесь не упустил ...

Кроме того, если вы перемещаете синий div справа,

0
ответ дан 7 December 2019 в 14:37
поделиться

Другой способ установить высоту 100% в html-объектах - это использовать стили:

<html>
<head>
 <style>
     html, body { 
   height: 100%; 
}

#mydiv { 
   height: 100%; 
   background-color:red; 
}           
 </style>
</head>
<body>
<div id="mydiv">aaa</div>
</body>
</html>
0
ответ дан 7 December 2019 в 14:37
поделиться

Ключ должен иметь установленную высоту для родительского контейнера. Тогда высота: 100% работает

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Divs</title>
<style type="text/css" media="all">
#main {
    height:30em;
    width:30em;
    background-color:#999999;
    padding:1em 1em 0px 1em;
}
.inner {
    width:5em;
}
#blue {
    float:right;
    background-color:#0000FF;
    height:100%;
}
#magenta {
    float:left;
    background-color:magenta;
}
</style>
</head>
<body>
<div id="main">
    <div class="inner" id="blue">
        1<br/>2<br/>3<br/>4<br/>5<br/>6<br/>7<br/>8<br/>9<br/>10
    </div>
    <div class="inner" id="magenta">
        1<br/>2<br/>3<br/>4<br/>5<br/>6
    </div>
</div>
</body>
</html>
0
ответ дан 7 December 2019 в 14:37
поделиться