← Комьюнити

Сканирование папки с картинками и вывод слайд шоу.

Владимир3 ответов

Всем Привет.

Хочу сделать, на сайте что бы было окошко, где ластились(анимацией) картинки из папки.

собственно отдельно  PHP  сканирование фото сделал.

сделал отдельно анимацию HTML, CSS.

В вот вместе соединить не как не выходит... 

вот HTML и CSS слайдшоу\анимация

https://codepen.io/vladimir-ignatov/pen/NLjbdW

Вот PHP сканирование папки с картинками.

index.php

<head>
        <meta charset="utf-8" />
        <link type="text/css" rel="stylesheet" href="css/styles.css" media="all" />
        <title> =) </title>
</head>
<body>

     <div id="title">
            <p>Сканирование папки с картинками;</p>
     </div>

    <div id="main-container">
                <div id="img"> 
                       <div class="img"> 
                              <?php $files = require 'php/scanfolder.php';?> 
                       </div>
                </div>
    </div>
</body>
</html>

scanfolder.php

<?php

$directory = 'images/';
    $scandir = scandir($directory);

             for ($i=0; $i<count($scandir); $i++) 
{
                  if ($scandir[$i] != '.' && $scandir[$i] != '..') 
{
        echo '<img src="'. $directory . $scandir[$i] . '" alt="'. $scandir[$i] . '" />';
}
}
?>





Вот  что у меня выходит:

index.php

<?php require_once('./php/scanfolder.php'); ?>

<head>
            <meta charset="utf-8" />
            <link type="text/css"
                    rel="stylesheet"
                    href="./css/styles.css"
                    media="all" />
         <title> =) </title>
</head>

                   <style>
                   @import url("./css/animation.css");
                  </style>

<body>

                  <div id="title">
                         <p>Сканирование папки с картинками</p>
                  </div>

                  <div id="main-container">
                        <div id="img">
                                 <div class="img">
                                         <div class="div-style">
                                                  <?php foreach ($files as $i => $file): ?>

                                                        <img src="<?= $file[ 'path' ] ?>"
                                                                 title="Image <?= $file[ 'name' ]; ?>"
                                                                 class="img-style im-<?= $i ?>">

                                                  <?php endforeach; ?>
                                           </div>
                                   </div>

                        </div>

                </div>

</body>
</html>

файл animation.css

@keyframes fadeIm-1
{
from { opacity: 1; }
16% { opacity: 1; }
25% { opacity: 0; }
91% { opacity: 0; }
to { opacity: 1; }
}

@keyframes fadeIm-2
{
from { opacity: 0; }
16% { opacity: 0; }
25% { opacity: 1; }
41% { opacity: 1; }
50% { opacity: 0; }
to { opacity: 0; }
}

@keyframes fadeIm-3
{
from { opacity: 0; }
41% { opacity: 0; }
50% { opacity: 1; }
66% { opacity: 1; }
75% { opacity: 0; }
to { opacity: 0; }
}

@keyframes fadeIm-4
{
from { opacity: 0; }
66% { opacity: 0; }
75% { opacity: 1; }
91% { opacity: 1; }
to { opacity: 0; }
}

.div-style
{
position: relative; 
text-align: center; 
width: 99%; 
}

.img-style
{
width: 33.3%;
margin-top: 8px;
border: 1px solid #0000ff;

animation-duration: 24s;
animation-iteration-count: infinite;
}

.img-style.next
{
position: absolute;
left: 33.3%;
opacity: 0;
}

.img-style.im-1
{ 
animation-name: fadeIm-1;
}

.img-style.next.im-2
{ 
animation-name: fadeIm-2;
}

.img-style.next.im-3
{
animation-name: fadeIm-3;
}

.img-style.next.im-4
{
animation-name: fadeIm-4;
}

также файлик styles.css

@charset "utf-8";
/* CSS Document */

body {
background: #ffffff; 
margin: 0px; 
padding: 0px; 
font-family: Georgia, "Times New Roman", Times, serif; 
font-size:15px;}

#main-container {
width: 960px; 
height: auto; 
display: table; 
background: #dddddd; 
margin: 30px auto 40px auto; 
border: 1px solid #fff; 
box-shadow: 0px 0px 3px #a5a5a5; 
padding: 0px 0px 10px 0px;}

#header {
background: black; 
box-shadow: 0px 0px 3px black; 
width: 100%; 
height: 30px; 
margin: 0px; 
padding: 10px 0px 0px 0px;}

#title { 
font-family: "Times New Roman", Times, serif; 
color: #000; 
text-shadow: 1px 1px 1px #fff; 
font-size: 26px; 
font-weight: bold; 
margin: 0px auto 0px auto; 
width: 960px;} 

#title p{

margin-bottom: 100px;}


.img img{
float: left; 
margin: 20px 5px 10px 5px; 
width: 296px; 
height: auto;}

#img {
margin: 0px auto 0px auto; 
display: table; 
height: auto; 
width: 920px;}

по итогу выходит вот такая шляпа...

https://ibb.co/b7kwnK

анимация происходит  саму на себя, картинка которая выделан красным.

Подскажите плз, что не так делаю....

3 ответов

Я бы разбил эту задачу на несколько этапов:

1. Сделать просто картинки в верстке и чтобы все работало (как в codepen)

2. Закомментировать html-код с картинками и вывести все картинки в цикле (без css вообще) просто в верстку с помощью php

3. Если все картинки выводятся, тогда добавить к ним нужные классы для анимации

Если не работает, я бы посмотрел через ctr+u исходный код в браузере который сгенерировал php для картинок и исправил ошибку генерации кода

p.s.

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

В файле scanfolder.php вы выводите через echo картинки и потом этот файл инклудите в другой php файл и там еще раз в цикле выводите - это тоже неверно, т.к. в codepen примере один раз выводятся картинки в верстке. 

И еще:

@import url("./css/animation.css");

лучше в head подключить через linkref, такой способ вроде оптимальнее, чем @import

student_B1eOljF61

1 и 2 пункт я делал.. делал отдельно html css верстку ссылку скидывал. все работает. делал отдельно PHP, а вот как  вместе совместить каша все время получается...

Владимир1

попробую поработать с этим:

"

3. Если все картинки выводятся, тогда добавить к ним нужные классы для анимации

Если не работает, я бы посмотрел через ctr+u исходный код в браузере который сгенерировал php для картинок и исправил ошибку генерации кода

 

p.s.

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

В файле scanfolder.php вы выводите через echo картинки и потом этот файл инклудите в другой php файл и там еще раз в цикле выводите - это тоже неверно, т.к. в codepen примере один раз выводятся картинки в верстке. 

И еще:

@import url("./css/animation.css");
лучше в head подключить через linkref, такой способ вроде оптимальнее, чем @import "

Владимир1