Я подготовил функцию, объединив решение Марка Байерса с комментариями Реймунда и Мортена Цилмера (относительный путь и включая пустые каталоги). В качестве наилучшей практики в построении файла ZipFile используется with
.
Функция также подготавливает имя файла zip по умолчанию с именем zip-каталога и расширением .zip. Следовательно, он работает только с одним аргументом: исходным каталогом, который нужно сжать.
import os
import zipfile
def zip_dir(path_dir, path_file_zip=''):
if not path_file_zip:
path_file_zip = os.path.join(
os.path.dirname(path_dir), os.path.basename(path_dir)+'.zip')
with zipfile.ZipFile(path_file_zip, 'wb', zipfile.ZIP_DEFLATED) as zip_file:
for root, dirs, files in os.walk(path_dir):
for file_or_dir in files + dirs:
zip_file.write(
os.path.join(root, file_or_dir),
os.path.relpath(os.path.join(root, file_or_dir),
os.path.join(path_dir, os.path.pardir)))
Не поддержка IE6! Чем раньше люди перестанут взламывать сайты для IE6, тем меньше у него будет поддержки и тем быстрее он умрет! Или добавьте этот код после вашего первого блока стиля;
<!--[if IE 6]>
<style type="text/css">
#sidebar_right, #sidebar_left {
position:absolute; /* position fixed for IE6 */
top:expression(0+((e=document.documentElement.scrollTop)?e:document.body.scrollTop)+'px');
left:expression(0+((e=document.documentElement.scrollLeft)?e:document.body.scrollLeft)+'px');
}
</style>
<![endif]-->
Результат не очень гладкий, но он работает.
ОБНОВЛЕНИЕ
Я не совсем понял, как это следует использовать; просто добавьте идентификатор (или класс) любых элементов, которые имеют "position: fixed", в список объявлений в начале указанного выше блока, и они будут вести себя в IE6.
да IE6 отстой. вот хак ...
_position: absolute;
_top: expression(0+((e=document.documentElement.scrollTop)?e:document.body.scrollTop)+'px');
, который в основном говорит IE6, что он должен оставаться в абсолютном левом верхнем углу даже при прокрутке. это должно быть под остальной частью вашего css для элемента, чтобы он заменил его в IE6.
вот он для вашей левой панели ...
#leftBar {
position:fixed;
top:0;
left:0;
width:200px;
_position:absolute;
_top:expression(0+((e=document.documentElement.scrollTop)?e:document.body.scrollTop)+'px');
}
Нашел это решение, которое я настроил (в основном я изменил следующие строки: $ ('# sidebar_left'). Css ('top', document.documentElement.scrollTop);):
// Editing Instructions
// 1. Change '#your_div_id' to whatever the ID attribute of your DIV is
// 2. Change '175' to whatever the height of your header is, if you have no header, set to 0
/********************************
* (C) 2009 - Thiago Barbedo *
* - tbarbedo@gmail.com *
*********************************/
window.onscroll = function()
{
if( window.XMLHttpRequest ) {
if (document.documentElement.scrollTop > 299 || self.pageYOffset > 299 && document.documentElement.scrollBottom > 100) {
$('#sidebar_left').css('top',document.documentElement.scrollTop);
$('#sidebar_right').css('top',document.documentElement.scrollTop);
} else if (document.documentElement.scrollTop < 299 || self.pageYOffset < 299) {
$('#sidebar_left').css('top','299px');
$('#sidebar_right').css('top','299px');
}
}
}
Он дрожит и выглядит плохо, но работает во всех браузерах, включая IE6.
Я недавно написал плагин jQuery, чтобы получить позицию: фиксированные работающие в IE 6+. Это [1129222] Джиттер на прокрутке, он смотрит на возможности (не пользователь-агент), работает в Internet Explorer 6, 7, 8.
Если вы используете строгий режим в положении IE7 +: исправлено Почитаемый, но по умолчанию IE7 + работает в режиме quirks. Этот плагин проверяет возможности для браузера, и если это не почетное положение: исправлено, то это реализует Fix jQuery.
http://code.google.com/p/fixedPosition/
Что-то вроде этого может работать для вас:
$(document).ready(function(){
$("#chatForm").fixedPosition({
debug: true,
fixedTo: "bottom"
});
});
Вам может потребоваться внесение небольших корректировок CSS, чтобы она работала для вашего кода. Я работаю над ценностями «компенсировать» как варианты, как мы говорим.