1

私はphpで作られたギャラリーに取り組んできました。少し前に、テーブルを使ってレイアウトを作成しました。それは超うまくいきました。現在、レイアウトにテーブルを使用することは推奨されておらず、一種の「非推奨」です(理由がわかりません。誰かがこれを説明してくれたら、ありがとうございます)。だから、私はレイアウトをテーブルからdivに変更しようとしていますが、多くの問題があります(cssを使用して適切なレイアウトを作成する方法についての良いリファレンスを誰かが勧めることができますか?)。これまで私はこれを管理しました:http://jsfiddle.net/hochvater/4DbUU/。私の最初の質問はこれです:#panel_poze divをコンテナdivの上部に表示し、#panel_albumeに接着するにはどうすればよいですか(現在のように)?#panel_albumeが、接着されているdiv(#panel_albume)に含まれる3番目のdivと並んでいる理由がわかりません。私の2番目の質問はこれです:大きなテーブル(divの構造によってどのように見えるかを簡単に想像できます)をコンテナdivに入れて、そのままにしておくことはできません...これはまだですか? 「非推奨」と見なされるか、推奨されませんか?

CSSコード:

    body {
    background-color: black;
    color: white;
}
@font-face {
    font-family:"john_handy";
    src: url("john_handy.eot");
    src: local("¢"), url("john_handy.woff") format("woff"), url("john_handy.TTF") format("opentype"), url("john_handy.svg#john_handy") format("svg");
}
@font-face {
    font-family:"bradley_hand";
    src: url("bradley_hand.eot");
    src: local("¢"), url("bradley_hand.woff") format("woff"), url("bradley_hand.TTF") format("opentype"), url("bradley_hand.svg#bradley_hand") format("svg");
}
a:link {
    color:white;
}
/* unvisited link */
 a:visited {
    color:white;
}
/* visited link */
 a:hover {
    color:red;
}
/* mouse over link */
 a:active {
    color:blue;
}
/* selected link */
 .fonty {
    text-align:center;
    font: italic 30px john_handy, serif;
}
a.fonty {
    font-style: normal;
    font-size:20px;
}
#pp {
    margin: 15% auto;
    max-width:80%;
    min-width:850px;
    text-align: center;
    white-space:nowrap;
}
.sec {
    position: static;
    margin: 0% 4%;
    max-width: 20%;
    min-width: 200px;
    display: inline-block;
}
.imageOff {
    border: 3px solid transparent;
    margin: auto;
}
.imageOn {
    border: 3px solid red;
    opacity: 0.7;
    filter: alpha(opacity=70);
    margin: auto;
}
.selected {
    padding: 2px;
    border: 1px solid red;
}
.submit {
    /*margin: 0;*/
    border: none;
    /*padding: 0;*/
    background: black;
    font:normal 20px john_handy, serif;
    color:white;
}
.subsel {
    color:red;
}
.submit:hover {
    color:red;
}
.poze_albume {
    border: 1px solid red;
    height: 250px;
    width: 200px;
}
#panel_poze {
    border: 1px solid blue;
    width: 70%;
    min-width: 400px;
    display: inline-block;
    height: 100px;
}
#panel_albume {
    border: 1px solid yellow;
    display:inline-block;
}
#container {
    text-align: center;
    width: 100%;
    border: 1px solid white;
    min-width: 700px;
}
.album {
}

ギャラリーコード:

<?php session_start(); ?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>
<link rel="stylesheet" type="text/css" href="./zastyle.css" />
</head>

<body><!-- oncontextmenu="return false;"> -->

<h1 class="fonty">Portofolio</h1>

<?php 
if (!isset($_POST['restart']))
{
?>

<div id="pp">
    <div class="sec ">
    <form action="./galerie.php" method="post" enctype="multipart/form-data">
        <input class="imageOff" onmouseover="this.className='imageOn'" onmouseout="this.className='imageOff'" type="image" src="./studio/photoshoot.JPG" title="Studio Photography" alt="Studio Photography" />
        <input type="hidden" name="album" value="studio" />
        <input type="hidden" name="restart" value="1"/>
        <br />
        <input type="submit" class="submit" value="Studio Photography" />
    </form>
    </div>
    <div class="sec ">
    <form action="./galerie.php" method="post" enctype="multipart/form-data">
        <input class="imageOff" onmouseover="this.className='imageOn'" onmouseout="this.className='imageOff'" type="image" src="./outdoor_lifestyle/lifestyle.jpg" title="Outdoor and Lifestyle Photography" alt="Outdoor and Lifestyle Photography" />
        <input type="hidden" name="album" value="outdoor" />
        <input type="hidden" name="restart" value="1"/>
        <br />
        <input type="submit" class="submit" value="Outdoor and Lifestyle" />
    </form>
    </div>
    <div class="sec " >
    <form action="./galerie.php" method="post" enctype="multipart/form-data">
        <input class="imageOff" onmouseover="this.className='imageOn'" onmouseout="this.className='imageOff'" type="image" src="./landscapes/landscapes.jpg" title="Landscapes" alt="Landscapes" class="album" />
        <input type="hidden" name="album" value="landscapes" />
        <input type="hidden" name="restart" value="1" />
        <br />
        <input type="submit" class="submit" value="Landscapes" />
    </form>
    </div>
    </form>
</div>

<?php //require("za_menu.php"); ?>

<?php
}
if (isset($_POST['restart'])&&$_POST['restart']==1){
?>

<div id="container">
    <div id="panel_albume">
        <div class="poze_albume">
        <form action="./galerie.php" method="post" enctype="multipart/form-data">
            <input class="imageOff <?php
            if($_POST['album']=='studio') echo 'selected';
            ?>" onmouseover="this.className='imageOn'" onmouseout="this.className='imageOff <?php
            if($_POST['album']=='studio') echo 'selected';
            ?>'" type="image" src="./studio/photoshoot.JPG" title="Studio Photography" alt="Studio Photography" />
            <input type="hidden" name="album" value="studio" />
            <input type="hidden" name="restart" value="1" />
            <br />
            <input type="submit" class="submit <?php
            if($_POST['album']=='studio') echo 'subsel';
            ?>" value="Studio Photography" />
        </form>
        </div>
        <div  class="poze_albume">
        <form action="./galerie.php" method="post" enctype="multipart/form-data">
            <input class="imageOff <?php
            if($_POST['album']=='outdoor') echo 'selected';
            ?>" onmouseover="this.className='imageOn'" onmouseout="this.className='imageOff <?php
            if($_POST['album']=='outdoor') echo 'selected';
            ?>'" type="image" src="./outdoor_lifestyle/lifestyle.jpg" title="Outdoor and Lifestyle Photography" alt="Outdoor and Lifestyle Photography" />
            <input type="hidden" name="album" value="outdoor" />
            <input type="hidden" name="restart" value="1" />
            <br />
            <input type="submit" class="submit <?php
            if($_POST['album']=='outdoor') echo 'subsel';
            ?>" value="Outdoor and Lifestyle" />
        </form>
        </div>
        <div  class="poze_albume">
        <form action="./galerie.php" method="post" enctype="multipart/form-data">
            <input class="imageOff <?php
            if($_POST['album']=='landscapes') echo 'selected';
            ?>" onmouseover="this.className='imageOn'" onmouseout="this.className='imageOff <?php
            if($_POST['album']=='landscapes') echo 'selected';
            ?>'" type="image" src="./landscapes/landscapes.jpg" title="Landscapes" alt="Landscapes" class="album"/>
            <input type="hidden" name="album" value="landscapes" />
            <input type="hidden" name="restart" value="1" />
            <br />
            <input type="submit" class="submit <?php
            if($_POST['album']=='landscapes') echo 'subsel';
            ?>" value="Landscapes" />
        </form>
        </div>
    </div>
    <div id="panel_poze"></div>
</div>

<?php }
session_destroy();
?>

</body>
</html>

これを読むことに時間を割いていただきありがとうございます。どんなアイデアでもいただければ幸いです。

4

2 に答える 2

0

TwitterBootstrap960.gsなどのCSSグリッドシステムを確認することをお勧めします

テーブルに関する質問に答えるには:CSSの前はテーブルの使用は問題ありませんでした。CSSは、コンテンツをより適切かつ柔軟な方法で整理するのに役立ちます。CSSトリックW3CSSチュートリアルを見て、どのよう<div>に機能し、どのようにそれらを浮かせることができるかを理解することをお勧めします。また、HTML5はコンテナーのセマンティックな意味を取り、サイトの構造をより適切に表現できるようにします。詳細を知りたい場合、または初期テンプレートを使用したい場合は、HTML5ボイラープレートをご覧ください。

于 2013-03-18T13:09:39.530 に答える
0

上記のアンドレの答えからの脱却。練習するのに良い方法は、非常に基本的なCSSプロパティを持ちながら、複数の異なる形式のdivを持つWebサイトを作成することです。これにより、ボックスがどのように相互作用するかを理解できます。

私が昔行ったそのようなプロジェクトの1つは、ヘッダー、水平ナビゲーション、そして全幅、50%〜50%のデュアル列、25%〜50%〜25%のトリプルのコンテンツブロックを単純に作成することでした。列、33%-33%-33%トリプル、および25%-25%-25%-25%クワッド列、次にフッター。

ギャラリーをモバイルフレンドリーにするために、レスポンシブレイアウトを検討する必要があります。

編集:

これはあなたがそれをどのように見せたいかという点であなたが意味していたことですか?

http://jsfiddle.net/4DbUU/1/

私はこれらのルールを変更しました:

#panel_poze {
border: 1px solid blue;
width: 70%;
min-width: 400px;
height: 100px;
float: left;
}

#panel_albume {
border: 1px solid yellow;
    float: left;
}

#container {
text-align: center;
width: 100%;
border: 1px solid white;
min-width: 700px;
clear: both;
overflow: hidden;
}

私はあなたを削除し、両方の子display: inline-block;に追加しました。float: left;それから私はコンテナにセットoverflow:hidden;してclear:both;(左右のフロート)するように言いました

編集2:

OPによって要求された明確さのために...

ラメンスの用語では、要素を使用float:leftまたはfloat:right要素上で使用する場合、ある意味でその要素をページからピックアップし、指示した方向に「フロート」させることができます。フロートされていない近くの要素を完全に無視して、このフロートを実行します。近くにある要素は、フロートされた要素を包み込み始めます。これは、たとえば、画像を左または右にフロートさせ、テキストを画像の周りに折り返すことができるようにするなど、望ましい場合があります。ただし、場合によっては、フロートした要素を他の要素でラップしたくない場合があります。このような場合は、clearコマンドを使用して、次に近い要素にフロート要素をラップアラウンドしないように指示します。次の2つの例を参照してください。

http://jsfiddle.net/GL4Pn/2/

上記の例では、明確なものはありません。黄色の.footerdivのテキストが2つのフロート要素の間に表示されていることに注意してください。

http://jsfiddle.net/GL4Pn/3/

この例では、 (黄色のdiv)に追加clear: left;しました。.footerdiv間の小さなスペースにラップされなくなったことに注意してください。ただし、要素の右側にラップされています。

http://jsfiddle.net/GL4Pn/4/

ここで私はそれを切り替えて、clear: right;それがもはや左のdivにラップアップされていないか、またはdiv間のスペースにもうラップされていないことに気づきました。右のdivの下にきちんとネストされています。これは、右のdivが最長のdivであるためです。左のdivの高さを右のdivより長くする場合...

...ここのように:http://jsfiddle.net/GL4Pn/5/

ここで、divは右側に折り返されますが、div間では折り返されません。今..コードをclear: both;...に変更すると

http://jsfiddle.net/GL4Pn/6/

clear:right右のdivが最長だったときの状態に戻っていることに注意してください。そして、左のdivを右よりも短く変更して、そのままにしておくclear:bothと...

http://jsfiddle.net/GL4Pn/7/

以前と同じ結果...

要素がコード内の次の要素である場合にのみ、要素がfloatをラップすることに注意することが重要です。明確になっていない最初の例に戻って、フッターの下にdivを追加すると、.footer divがすでに使用可能なスペースを使用しているため、誤動作しないことがわかります。

http://jsfiddle.net/GL4Pn/8/

于 2013-03-18T14:05:05.923 に答える