2

モバイル ブラウザー (Android JB および iOS 6 でテスト済み) で表示した場合、私のページは縦向きモードと横向きモードの両方で最初に読み込まれたときに正常にレンダリングされます。ただし、横向きから縦向きにすると、絶対位置の div が実際の位置からオフセットされます。奇妙な部分は、向きを変更するときにズームインすると、この問題が発生しないことです。

これは、ここで言及されている問題と同じです: iPad で方向を変更した後の CSS 要素の位置の奇妙なオフセットは 、電話でテストしているという違いだけです。そこで提供されている解決策を試しましたが、うまくいかないようです。

ここに私のCSSがあります

       html{
            width: 100%;
            height: 100%;
        }

        body{
            position: relative;
            overflow: hidden;
            width: 100%;
            height: 100%;
            margin: 0;
            padding: 0;
            background: #000;
        }

        #container{
            position: relative;
            width: 100%;
            height: 100%;
            margin: 0;
            padding: 0;
            min-width: 960px;
            min-height: 544px;
        }

        #pic{
            display: table;
            height: 100%;
            width: auto;
            margin: 0 auto;
            z-index: 5;
        }

        #links{
            position: absolute;
            width: 100%;
            height: 50px;
            bottom: 5px;
            left: 0;
            right: 0;
            z-index: 9;
            background: #ccc;
            -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=10)";
            filter: alpha(opacity=10);
            -moz-opacity: 0.1;
            -khtml-opacity: 0.1;                  
            opacity: 0.1;
        }

        #wrapper{
            position: absolute;
            width: 100%;
            height: 50px;
            bottom: 5px;
            left: 0;
            right: 0;
            z-index: 12;
        }

        #content{
            display: table;
            width: 100%;
            height: 100%;
            margin: 0 auto;
        }

        #content div{
            display: inline-block;
            *display: inline;
            zoom: 1;
            width: 20%;
            text-align: center;
        }

        #content div *{
            vertical-align: middle;
            border: 0;
            text-decoration: none;
            color: #000;
            border-radius: 5px;
        }

        /* portrait */
        @media screen and (orientation:portrait) {
            #container{
                position:relative;
            width: 100%;
            height: 100%;
            margin: 0;
            padding: 0;
            min-width: 960px;
            min-height: 544px;
            }
        }
        /* landscape */
        @media screen and (orientation:landscape) {
            #container{
                position:relative;
            width: 100%;
            height: 100%;
            margin: 0;
            padding: 0;
            min-width: 960px;
            min-height: 544px;
            }
        }

ご覧のとおり、他の質問の解決策を試しましたが、うまくいきません。そして私のHTML構造

<div id="container">
        <img src="pic_jj.jpg" alt="image" id="pic" />
        <div id="links">

        </div>
        <div id="wrapper">
            <div id="content">

                <div>
                </div>

                <div>
                </div>

                <div>
                </div>

                <div>
                </div>

                <div>
                </div>

            </div>
        </div>
    </div>

ライブデモが必要な場合は、ここで私のページを表示できます。おそらく、js 以外のソリューションを探していることを言及する必要があります。

PS。私はこのメタタグを使用しています:

<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1, maximum-scale=1, user-scalable=no;">

スクリーンショットを更新します。

初期ロードは次のようになります (通常の動作) ここに画像の説明を入力

向きを横向きから縦向きに変更するとどうなるか ここに画像の説明を入力 ここに画像の説明を入力

4

2 に答える 2

3

上記のコメントで私と Wallace Sidhrée が示唆しているように、このレンダリングの問題には、より伝統的な手法を利用して別の方法でアプローチする必要があります。これらの問題に対処すると、レンダリングの癖が無効になる可能性があります。そうでない場合は、少なくとも問題の発見が大幅に容易になります。以下にいくつかの注意事項を示します。

-スタイルシートに重複したスタイルがあります (つまり、不要な @media クエリ)
別の SO の質問から解決策を試したことを示すためにこれらのメディアクエリを追加したと述べていますが、それが間違っていたとしても結果が未定義になる可能性が高いため、問題を解決するためのアプローチ。理論的には、追加のメディア クエリによってレイアウトがまったく変更されることはありません。

-要素の従来のプロパティで<img>はなく、タグを使用して背景を表示している 希望する黒の背景とのブレンドを実現するには、背景画像と色の両方を使用する必要があります。試してください:背景画像は常に背景色の上に重ねられます。background<div>
background-color: #000000;background-image: url(image.jpg)

-画像のセンタリングを試みるために要素に適用display: table;しています#pic
background-position: center;

-位置プロパティの設定を伴わずに要素でプロパティをz-index使用する z-index を使用するには、位置プロパティを、または のいずれかに設定する必要があります。z-index は要素に影響を与えません。これは、明示的に定義されていない場合のデフォルト値です。#pic
fixedabsoluterelativeposition: static;

-要素の背景色の設定としてではなく、別の要素の opacity プロパティを変更して背景の透明度を実現しようとしてい
ます rgba 値がサポートされていないため、これを行ったと述べています。しかし、より伝統的なアプローチは、RaphaelDDL が提案したことを行い、アルファ透明度を含まないフォールバック値を提供することです。

HTML を簡素化することをお勧めします。これ以上のマークアップは必要ありません。

<body>
    <div id="image></div>
    <div id="flair">
        <div id="flair-container">
            <div class="flair"></div>
            <div class="flair"></div>
            <div class="flair"></div>
            <div class="flair"></div>
            <div class="flair"></div>
        </div>
    </div>
</body>

アップデート

これが私の提案を考慮した「フィドル」です。iPad (iOS 6.1.3) と Nexus 7 (Android 4.2.2) でテストしたとき、回転の異常に気付きませんでした。

于 2013-09-11T17:49:13.073 に答える
1

これを設計したところ、ブラウザのサイズ変更に反応することがわかりました。コードを変更し、可能であれば I パッドまたはタブでテストする必要があります。それが最終結果につながると思いますので、お試しください。:)

<!DOCTYPE html>

ジーバン・ホセ

    <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1, maximum-scale=1, user-scalable=no;">
    <meta name="description" content="Jeevan Jose | About | Twitter | LinkedIn | Facebook | Email">
    <meta name="keywords" content="Computer Engineer, Software Engineer, IT, Jeevan Jose, Jeevan, Photographer">
    <meta name="author" content="Jeevan Jose">
    <meta charset="UTF-8">

    <style type="text/css">
        html{
            width: 100%;
            height: 100%;
        }

        body{
            position: relative;
            overflow: hidden;
            width: 100%;
            height: 100%;
            margin: 0;
            padding: 0;
            background: #000;
        }

        #container{
            position: relative;
            width: 100%;
            height: 90%;
            margin: 0;
            padding: 0;
            min-width: 100%;
            min-height: 90%;
        }

        #pic{
            display: table;
            height: 80%;
            width: 80%;
            margin: 0 auto;
            z-index: 5;
        }

        #links{
            position: absolute;
            width: 100%;
            height: 10%;
            bottom: 5px;
            left: 0;
            right: 0;
            z-index: 9;
            background: #ccc;
            -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=10)";
            filter: alpha(opacity=10);
            -moz-opacity: 0.1;
            -khtml-opacity: 0.1;                  
            opacity: 0.1;
        }

        #wrapper{
            position: absolute;
            width: 100%;
            height: 10%;
            bottom: 5px;
            left: 0;
            right: 0;
            z-index: 12;
        }

        #content{
            display: table;
            width: 100%;
            height: 100%;
            margin: 0 auto;
        }

        #content div{
            display: inline-block;
            *display: inline;
            zoom: 1;
            width: 19%;
            text-align: center;
        }

        #content div *{
            vertical-align: middle;
            border: 0;
            text-decoration: none;
            color: #000;
            border-radius: 5px;
        }

        /* portrait */
        @media screen and (orientation:portrait) {
            #container{
            position: relative;
            width: 100%;
            height: 100%;
            margin: 0;
            padding: 0;
            min-width: 100%;
            min-height: 90%;
        }

        #pic{
            display: table;
            height: 80%;
            width: 80%;
            margin: 0 auto;
            z-index: 5;
        }

        #links{
            position: absolute;
            width: 100%;
            height: 10%;
            bottom: 5px;
            left: 0;
            right: 0;
            z-index: 9;
            background: #ccc;
            -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=10)";
            filter: alpha(opacity=10);
            -moz-opacity: 0.1;
            -khtml-opacity: 0.1;                  
            opacity: 0.1;
        }

        #wrapper{
            position: absolute;
            width: 100%;
            height: 10%;
            bottom: 5px;
            left: 0;
            right: 0;
            z-index: 12;
        }
        }
        /* landscape */
        @media screen and (orientation:landscape) {
            #container{
            position: relative;
            width: 100%;
            height: 100%;
            margin: 0;
            padding: 0;
            min-width: 100%;
            min-height: 90%;
        }

        #pic{
            display: table;
            height: 80%;
            width: 80%;
            margin: 0 auto;
            z-index: 5;
        }

        #links{
            position: absolute;
            width: 100%;
            height: 10%;
            bottom: 5px;
            left: 0;
            right: 0;
            z-index: 9;
            background: #ccc;
            -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=10)";
            filter: alpha(opacity=10);
            -moz-opacity: 0.1;
            -khtml-opacity: 0.1;                  
            opacity: 0.1;
        }

        #wrapper{
            position: absolute;
            width: 100%;
            height: 10%;
            bottom: 5px;
            left: 0;
            right: 0;
            z-index: 12;
        }
        }
    </style>
</head>
<body>
    <div id="container">
        <img src="http://jeevanjose.com/pic_jj.jpg" alt="image" id="pic" />
        <div id="links">

        </div>
        <div id="wrapper">
            <div id="content">

                <div>
                <!--Facebook Button-->
                <iframe src="https://www.facebook.com/plugins/follow.php?href=https%3A%2F%2Fwww.facebook.com%2Fjosejeevan&amp;width=200&amp;height=21&amp;colorscheme=dark&amp;layout=button_count&amp;show_faces=true" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:100px; height:21px;" allowTransparency="true"></iframe>
                </div>

                <div>
                <!--Twitter handle-->
                <a href="https://twitter.com/jeevan_jose" class="twitter-follow-button" data-show-count="false" data-size="large" data-show-screen-name="false">Follow @jeevan_jose</a>
                <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
                </div>

                <div>
                <!--LinkedIn badge-->
                <a href="http://uk.linkedin.com/in/josejeevan">      
                    <img src="http://www.linkedin.com/img/webpromo/btn_myprofile_160x33.png" width="160" height="33" border="0" alt="View Jeevan Jose's profile on LinkedIn">
                </a>
                </div>

                <div>
                <!--Stackoverflow Flair-->
                <a href="http://stackoverflow.com/users/2025666/jeevan-jose">
                    <img src="http://stackoverflow.com/users/flair/2025666.png?theme=dark" width="208" height="50" alt="SO Flair">
                </a>
                </div>

                <div>
                <!--Email Button-->
                <a href="mailto:contact@jeevanjose.com?subject=Reference%20-%20jeevanjose.com">
                    <img src="email_button.png" alt="email button" />
                </a>
                </div>

            </div>
        </div>
    </div>

    <!-- Start of StatCounter Code for Default Guide -->
    <script type="text/javascript">
    //<![CDATA[
    var sc_project=8629786; 
    var sc_invisible=1; 
    var sc_security="d00c7885"; 
    var scJsHost = (("https:" == document.location.protocol) ?
    "https://secure." : "http://www.");
    document.write("<sc"+"ript type='text/javascript' src='" +
    scJsHost+
    "statcounter.com/counter/counter_xhtml.js'></"+"script>");
    //]]>
    </script>
    <noscript><div class="statcounter"><a title="web statistics"
    href="http://statcounter.com/free-web-stats/"
    class="statcounter"><img class="statcounter"
    src="http://c.statcounter.com/8629786/0/d00c7885/1/"
    alt="web statistics" /></a></div></noscript>
    <!-- End of StatCounter Code for Default Guide -->

    <!--Google Analytics-->
    <script>
      (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
      (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
      m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
      })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

      ga('create', 'UA-43825613-1', 'jeevanjose.com');
      ga('send', 'pageview');

    </script>
</body>

メモ帳で変更したため、パスの問題により一部の画像が表示されない場合がありますが、確認してください。:)

于 2013-09-12T18:25:15.190 に答える