DIV с процентной шириной не работает (без границ, без полей/отступов)

я создал свой собственный индикатор выполнения и получил некоторые проблемы

у меня есть полный .box с шириной = 90%

в этом поле у ​​меня есть div .progress с шириной = 100

в .progress div я получил .left-free div 10%, .progressbar 80%, .right-free 100%

в .progressbar я получил 4 div .grey 30%, .violet 30%, .brown 30%, .blank 0%

проблема в том, что я не знаю, почему .grey, .violet, .brown не одного размера!

редактировать: (.blank div - это просто разделитель. с этим все в порядке.)

я не использую поля или отступы или любые границы. граница вокруг .progressbar была реализована с помощью box-shadow.

мой HTML-код:

<div id="box">

    <div id="progress">

        <div class="left-free">10% free</div>

        <div class="progressbar">
            <div class="grey" style="width:30%">30%</div>
            <div class="violet" style="width:30%">30%</div>
            <div class="brown" style="width:30%">30%</div>
            <div class="blank" style="width:0%">0%</div>
        </div>

        <div class="right-free">10% free</div>

    </div>

</div> 

мой CSS-код:

body
    {
        width:100%;
        background-color:#eee;
        padding:0;
        margin:0 auto;
    }
#box
    {
        width:90%;
        padding:0;
        margin:2% auto;
        background-color:#eee;
    }
#progress
    {
        width:100%;
        padding:0;
        margin-bottom:10%;
    }    
.left-free
    {          
        width:10%;
        float:left;
        box-shadow: inset -1px 0px 0px rgba(0, 0, 0, 1);         /* right */
    }
.progressbar
        {
            position:relative;
            width:80%;
            float:left;
            background-color:#ffffff;
            box-shadow: inset 0px 1px 0px rgba(0, 0, 0, 1),         /* top */
                        inset 0px -1px 0px rgba(0, 0, 0, 1);         /* bottom */
        }
.grey {background-color:grey;}
.violet  {background-color:violet;}
.brown  {background-color:brown;}
.blank {background-color:#ffffff;}

.grey,
.violet,
.brown,
.blank
    {
        height:100px;                                            
        float:left;
        margin-top:1px;
    }

.left-free,
.progressbar,
.right-free
    {
        height:102px;                                           
    }
.right-free
    {
        width:10%;
        float:left;
        box-shadow: inset 1px 0px 0px rgba(0, 0, 0, 1);         /* border left */
        text-align:right;
    }

Я сделал снимок экрана и поместил зеленую полосу одинаковой ширины на все 3 поля! на .violet и .brown div у меня есть разделитель на правом конце (надеюсь, вы видите его на изображении)

проблема

вот кадр для лучшего обзора

обрезанный

вы можете увидеть работающий код на jsfiddle

второй пример: jsfiddle 2

есть идеи, почему коробки не имеют одинакового размера?

редактировать: я загрузил html в pastebin


person bernte    schedule 30.11.2012    source источник
comment
Я проверил jsfiddle в хроме, а серый, фиолетовый и коричневый цвета имеют одинаковую ширину и высоту.   -  person Vucko    schedule 01.12.2012
comment
Я также проверил ваш пример, Chrome в Windows и Safari на Mac, я использовал руководства в фотошопе, и все 3 идентичны.   -  person zeMinimalist    schedule 01.12.2012
comment
В самом деле? я использую firefox на win7 и получил проблему, как описано, и то же самое на Internet Explorer 9   -  person bernte    schedule 01.12.2012
comment
Я бы сказал, что проблема кроется в зеленых полосах. Установите в них фиксированную ширину и посмотрите, что получится (например, 200 пикселей).   -  person Vucko    schedule 01.12.2012
comment
но я создал зеленые полосы в фотошопе..   -  person bernte    schedule 01.12.2012
comment
я отредактировал свой вопрос и загрузил html в pastebin .. может быть, вы можете проверить это еще раз?   -  person bernte    schedule 01.12.2012
comment
Я только что проверил скрипку на Chrome, Safari и Firefox. Они выглядят нормально для меня во всех браузерах.   -  person Michelle    schedule 01.12.2012


Ответы (1)


изменить ширину серого и коричневого на 30,1% или просто удалить границы полосы прогресса

person Adeel Mughal    schedule 01.12.2012
comment
почему до 30,1%? у меня нет границ .. граница - это просто тень блока и не влияет на ширину полосы - person bernte; 01.12.2012
comment
это потому, что вы не сбрасываете свой css, прочитайте об этом developer.yahoo.com/yui/reset - person Adeel Mughal; 01.12.2012
comment
что именно вы хотите сделать с этими div???? поэтому, возможно, я могу предоставить вам другие решения... - person Adeel Mughal; 01.12.2012
comment
хорошо... позвольте мне объяснить... в одном дне 1440 минут... цветные поля (30%) - это 480 минут минус 10%. так что я получил 384 минуты для каждой коробки, и это дает мне ширину 30%. мой php-скрипт теперь проверяет время работы и выдает мне результат по ширине. так что я получаю результат эффективности в моей компании.. например, здесь вы можете видеть, что серая коробка сработала хорошо jsfiddle.net/ka7gn здесь у нас избыточная мощность. вот почему мне нужен белый ящик.. мой php-скрипт работает нормально.. но в шаблоне есть ошибка.. что не подходит для статистики: D - person bernte; 01.12.2012