Кодирование динамического PHP css базирующийся индикатор выполнения - проблема процента математики

Я кодирую индикатор выполнения PHP, который обновит себя через число процента, которое дано ему, но у меня есть проблемы, разрабатывающие проценты.

Мой код в настоящее время следующие:

PHP

$percent = $_GET['percent'];

if($percent < 5)
    //low-image.jpg

elseif($percent > 95)
   //high-image.jpg

else{
$lowpercent = 100 - $percent;

$highwidth = 270/100 * $percent;
$lowwidth = 270/100 * $lowpercent;

HTML

<div class="first"></div>
<div class="mid-first" style="width:<?=$highwidth?>px;"></div>
<div class="mid-second" style="width:<?=$lowwidth?>px;"></div>
<div class="last"></div>

CSS

.first. mid-first, .mid-second, .last{
    display:block;
    float:left;
    height:62px;
    }
.first{
    background:url(low.png);
    width:31px;
}
.mid-first{
    background:url(mid-first.png) repeat-x;
}
.mid-second{
    background:url(mid-second.png);
}
.last{
    background:url(high.png);
    width:32px;
}

проблема

В данный момент проценты разработаны немного неправильно, мой мозг математики, кажется, был неуместен сегодня...

Есть 4 отделения, первое и последнее отделение поднимают 5% каждый так 10%, средние отделения тогда равняются другим 90%.

Это означает, когда рисунок 50 дан, передал на пути $ _GET , это разработает 50% средних баров не включая 5%-й первый бар, который неправ, это должно принять первые 5% во внимание и затем разработать 50% пиксельных ширин?

Как я могу изменить математику позади процента, чтобы зафиксировать два средних бара так, чтобы, когда 50% применяется, оба средних бара были равны в пикселях?

0
nl ja de
@Blazemonger that' s положительная сторона
добавлено автор Dan, источник
Первые вещи сначала: "математика" всегда исключительна. У британцев есть он неправильно.;-)
добавлено автор Blazemonger, источник
Во-вторых: почему вы преобразовываете их в пиксели вообще? Используйте проценты в CSS и спасите себе вычисление.
добавлено автор Blazemonger, источник

3 ответы

Нет никакого серьезного основания использовать пиксели вообще. Оберните свои отделения в содержании отделения и используйте проценты в вашем CSS.

PHP:

$lowpercent = 100 - $percent;

HTML:

<div class="barwrapper">
    <div class="first"></div>
    <div class="mid-first" style="width:<?=($percent-5)?>px;"></div>
    <div class="mid-second" style="width:<?=($lowpercent-5)?>px;"></div>
    <div class="last"></div>
</div>

CSS:

.first{
    background:url(low.png);
    width:5%;
}
.last{
    background:url(high.png);
    width:5%;
}

OR, if you don't want first and last to be taken away from the 100%:

<div class="first"></div>
<div class="barwrapper">
    <div class="mid-first" style="width:<?=($percent)?>px;"></div>
    <div class="mid-second" style="width:<?=($lowpercent)?>px;"></div>
</div>
<div class="last"></div>

CSS:

.first{
    background:url(low.png);
    width:30px;
}
.last{
    background:url(high.png);
    width:30px;
}
1
добавлено
Это работает, но проблема - первое отделение, всегда 5%, таким образом, я должен разработать два процента, приняв это во внимание?
добавлено автор Dan, источник
.first и. в последний раз за пределами индикатора выполнения. Если индикатор выполнения предназначается, чтобы быть 50%, то $percent = 50; , что означает, HTML был бы width:50%; , но первая секция всегда - 5%, таким образом, это тренируется в 55% / 50%.
добавлено автор Dan, источник
I' m не ясный, что вы имеете в виду. <Кодируют> .first и .last часть 100%-го индикатора выполнения, или они за пределами бара?
добавлено автор Blazemonger, источник
Хорошо, затем используйте HTML, подобный моему второму подходу, так, чтобы только .mid-сначала и , .mid-второй , был в .barwrapper .
добавлено автор Blazemonger, источник

Необходимо преобразовать $highwidth и $lowwidth к целым числам прежде, чем написать им в CSS или HTML. Поскольку это, они - числа с плавающей точкой.

Я думаю, что это могло бы работать:

$percent = $_GET['percent'];

if($percent < 5)
    //low-image.jpg

elseif($percent > 95)
   //high-image.jpg

else{
    $highwidth = intval(270/90 * ($percent-5));
    $lowwidth = 270 - $highwidth;
}
1
добавлено
Этот doesn' t затрагивают что-либо.
добавлено автор Blazemonger, источник

Необходимо преобразовать ширину в целое число, поскольку это может также быть плавающая точка, и можно вычислить ширину 2-го бара просто substracting 1-я барная ширина от общего количества.

// We have already used 10 percents, so let's substract them
$percent = $percent - 10;

// We can't have negative percents, right?
if ($percent < 0) $percent = 0;

// Calculate 1st bar
$highwidth = (int) 270/100 * $percent;

// 100% - 1st bar = 2nd bar
$lowwidth = 270 - $highwidth;
0
добавлено
Этот doesn' t принимают во внимание фактическую проблему, которая составляет первые 5%, уже применяется.
добавлено автор Dan, источник
You' ve просто сделанная алгебра по выражению; это shouldn' t изменяют фактический результат.
добавлено автор Blazemonger, источник
phpGeeks
phpGeeks
3 620 участник(ов)

Best PHP chat Еще: @dbGeeks - базы данных @phpGeeksJunior - новичкам @moscowProgers - IT Москва @ebanoePhp - весёлый канал о PHP @laravel_pro - Laravel @jobGeeks - вакансии @jsChat - JS Правила: https://t.me/phpGeeks/764859 ДР - 28.03.2016

PHP
PHP
1 309 участник(ов)

Группа про современный PHP. Обсуждаем ООП, TDD, BDD, DDD, SOLID, GRASP и прочие крутые базворды Для ознакомления: https://gist.github.com/mkusher/711bd46f0b62fbae851182e6fb3b1839 Группа PHP для новичков @phpGeeksJunior Вакансии: https://t.me/fordev

PHP — вакансии, поиск работы и аналитика
PHP — вакансии, поиск работы и аналитика
1 251 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению PHP, Laravel, Symfony, Yii и т.д. Здесь всё: full-time, part-time, remote и разовые подработки. См. также: @qa_jobs, @devops_jobs, @javascript_jobs, @nodejs_jobs, @uiux_jobs, @products_jobs

phpGeeksJunior
phpGeeksJunior
980 участник(ов)

Группа для новичков. Не стесняйтесь задавать вопросы по php. Не флудить!!!! Правила и полезные ссылки https://gist.github.com/exileed/a53dd0617b35a705ff44b38c8028e6a5 Бест от пхпгикс https://t.me/best_of_phpgeeks

phpclub.ru
phpclub.ru
872 участник(ов)

Официальный чат phpclub.ru - остерегайтесь подделок #rules Правила группы - уважайте друг друга. Скриншоты -> ссылками. Код -> pastebin.com. Вакансии строго -> https://goo.gl/4bNxym, в чат ссылку. За рекламу и мат - БАН!

Infernal Math
Infernal Math
389 участник(ов)

http://www.zepta.ru/index.php?title=Заглавная_страница Приглашение в чат: https://t.me/matheden

comput.math
comput.math
289 участник(ов)

Прикладная математика и численные методы. Без оффтопа, рекламы, флуда. Вышмат: @higher_math Физика: @physpub Новичкам: @starter_math @JuliaLanguage @rlang_ru Книги брать здесь: libgen.io И по хештегу #book

Devall | PHP
Devall | PHP
272 участник(ов)

Пристанище для восходящих звёзд разработки, которые перейдут на более адекватные языки. http://combot.org/chat/-1001014863761 Инвайт: j.mp/devallphp

higher.math
higher.math
234 участник(ов)

Higher mathematics / высшая математика Подборка книжек: https://ru.stackoverflow.com/a/683632/1084 Вычмат: @comput_math Физика: @physpub LaTeX: @pro_latex

Starter Math
Starter Math
79 участник(ов)

Для тех, кто боится спросить в @higher_math Вычмат: @comput_math Физика: @physpub