Изменение веб-страницы, чтобы она совместима с мобильными/планшетами

SO,

Я ищу некоторую помощь, сделав довольно простую страницу более мобильным/планшетом, как в настоящее время на некоторых мобильных устройствах, она выглядит довольно уродливой: S

Я попытался правильно позиционировать вещи и использовал пиксели, а не проценты, потому что я только делаю вещи в каждом углу (верхний и нижний столбцы), и я попытался включить некоторое масштабирование, а также код, чтобы сделать изображения не отображение на определенной ширине экрана

Может кто-нибудь помочь исправить мой html/css, чтобы он полностью совместим, поскольку он никогда не работает, когда я вношу изменения.

HTML:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
    <meta content="true" name="HandheldFriendly" />
    <meta content="width=device-width" name="viewport" />
    <meta content="width=device-width,initial-scale=0.75" name="viewport" />
    <title>Website.com</title>
    <link href="testing.css" rel="stylesheet" type="text/css" />
</head>
<body>
    <div id="header_container">
        <div id="header">
            <div class="headimage">
                <a href="#" onclick="location.href='http://website.com/'; return false;" target="_blank">
                    <img alt="" class="headimager" src="http://placehold.it/350x95/" />
                </a>
            </div>
            <select class="class-selector">
                <option value="">- Testing Dropdown -</option>
            </select>
            <div class="classcycler"><a href="javascript: void(0);" id="NextPage"><font color="#EFEFEF">Next Page</font></a>  <font color="red">|</font>  <a href="javascript: void(0);" id="PreviousPage"><font color="#EFEFEF">Previous Page</font></a>
            </div>
            <div class="classcycler2"><a class="downclass" href="javascript: void(0);"><font color="#EFEFEF">Scroll Down</font></a>  <font color="red">|</font>  <a class="upclass" href="javascript: void(0);"><font color="#EFEFEF">Scroll Up</font></a> 
            </div>
            <div class="headright"><a class="TOPJS" href="javascript: void(0);"><font color="#EFEFEF">Up to Top</font></a> 
                <br/> <a class="KEYJS" href="javascript: void(0);"><font color="#EFEFEF">Down to Bot</font></a> 
            </div>
        </div>
    </div>
    <div id="container">
        <table id="gradient-style" summary="">      <tbody><thead><tr><th colspan="30">Data>>>>>Test>>>>>123>>>>>Please>>>>>Help>>>>>Stackoverflow>>>>>Testing>>>>>Here>>>>>Data>>>>>Test>>>>>123>>>>>Please>>>>>Help>>>>>Stackoverflow>>>>>Testing>>>>>Here>>>>>Data>>>>>Test>>>>>123>>>>>Please>>>>>Help>>>>>Stackoverflow>>>>>Testing>>>>>Here>>>>>Data>>>>>Test>>>>>123>>>>>Please>>>>>Help>>>>>Stackoverflow>>>>>Testing>>>>>Here>>>>></th></tr></thead></tbody></table>
    </div>
    <div id="footer_container">
        <div id="footer">
            <div class="footimage">
                <a href="#" onclick="location.href='http://website.com/'; return false;" target="_blank">
                    <img alt="" class="footimager" src="http://placehold.it/350x95/" />
                </a>
            </div>
            <div class="footleft">
                <a class="def" href="javascript: void(0);"></a>
            </div>
            <div class="footright">
                <a class="abc" href="javascript: void(0);"></a>
            </div>
        </div>
    </div>
</body>
</html>

CSS

body {
    background: #F0F0F0;
    line-height: 1.6em;
    margin: 0;
    overflow-x: scroll;
    padding: 0;
}

#header_container {
    background: url(gradhead.png) repeat-x #111625;
    border: 0 solid #666;
    height: 80px;
    left: 0;
    position: fixed;
    top: 0;
    width: 100%;
}

#footer .headimage {
    position: relative;
}
#header .headright {
    font-size: 20px;
    position: fixed;
    right: 10px;
    text-align: right;
    top: 15px;
}

#header .class-selector {
    left: 10px;
    position: fixed;
    top: 5px;
}

#header .classcycler {
    font-size: 20px;
    left: 10px;
    position: fixed;
    top: 30px;
}

#header .classcycler2 {
    font-size: 20px;
    left: 10px;
    position: fixed;
    top: 50px;
}

#container {
    margin: 0 auto;
    padding: 80px 0;
    width: 100%;
}

#footer_container {
    background: url(gradhead.png) repeat-x #111625;
    border: 0 solid #666;
    bottom: 0;
    height: 80px;
    left: 0;
    position: fixed;
    width: 100%;
}

#footer .footleft {
    font-size: 20px;
    left: 10px;
    position: absolute;
    top: 10px;
}

#footer .footright {
    font-size: 20px;
    position: absolute;
    right: 10px;
    top: 10px;
}

#footer .footimage {
    position: relative;
    top: -13px;
}

#footer .footleft a {
    background: url(http://placehold.it/60x60/) no-repeat;
    display: block;
    height: 60px;
    width: 60px;
}

#footer .footleft a:hover {
    background: url(http://placehold.it/60x60/000) no-repeat;
}

#footer .footright a {
    background: url(http://placehold.it/60x60/) no-repeat;
    display: block;
    height: 60px;
    width: 60px;
}

#footer .footright a:hover {
    background: url(http://placehold.it/60x60/000) no-repeat;
}

#header,#footer {
    color: #ECECEC;
    height: 100%;
    margin: 0 auto;
    position: relative;
    text-align: center;
    width: 100%;
}

@media screen and max-width 600px {
    .headimager {
        display: none;
    }
}

@media screen and max-width 450px {
    .footimager {
        display: none;
    }
}

Причина отсутствия ссылки jsfiddle заключается в том, что она не позволяет помещать метатеги.

JavaScript

$("a.def").click(function () {
    $('body').animate({
        "scrollLeft": "-=404"
    }, 200);
});

$("a.abc").click(function () {
    $("body").animate({
        "scrollLeft": "+=404"
    }, 200);
});

Ответ 1

Существует несколько способов размещения мобильных/планшетных устройств на вашем веб-сайте.

ФИКСИРОВАННЫЙ ДИЗАЙН

Создайте таблицу стилей, которая работает в общих чертах во всех форматах. Ваш сайт будет отображаться на всех устройствах одинаково, но этот процесс будет самым простым решением.

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

ПРОФИ

При использовании хорошо этот процесс использует наименьшие ресурсы и быстрее создает и изменяет.

СВОД

Если ваш сайт имеет большое количество контента на странице, ваш сайт может стать очень ограниченным на более мелких устройствах

RESPONSIVE DESIGN

Если вы хотите, чтобы ваш сайт просматривался по-разному и, возможно, оптимально на разных устройствах, вам нужен отзывчивый дизайн. Этого можно достичь, используя динамическую таблицу стилей или используя несколько таблиц стилей для разных устройств.

ПРОФИ

Очень универсальный веб-сайт, который может отображаться уникально и оптимально на основе устройства просмотра.

СВОД

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


СОЗДАНИЕ ОТВЕТНЫХ СТИЛЬНЫХ ЛИСТОВ

Практически невозможно использовать ширину набора, потому что есть простые для многих вариабельные размеры. Ответ - все гибкое.

  • Использование метатега viewport, как в вашем примере, для таргетинга на устройство это доступ к вашему сайту.

    <meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"/>

    Существует явно спрос на метатег viewport, поскольку он поддерживается большинством популярных мобильных браузеров и используется тысячами веб-сайтов.

  • Использование медиа-запросов.

Запросы СМИ позволяют писать индивидуальные правила для определенной ширины экрана.

/* Smartphones (portrait and landscape) ----------- */
@media only screen
and (min-device-width : 320px)
and (max-device-width : 480px) {
/* Styles */
}

/* Smartphones (landscape) ----------- */
@media only screen
and (min-width : 321px) {
/* Styles */
}

/* Smartphones (portrait) ----------- */
@media only screen
and (max-width : 320px) {
/* Styles */
}
  • Использование Javascript.

Хорошее решение для javascript, отличное от бутстрапа, jquery mobile, что отнимает время и усилия для разработки гибкого сайт, выполнив для вас работу. Вам не нужно знать или редактировать любой javascript, чтобы использовать его.


КОНКРЕТНЫЕ

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

ИЗМЕНИТЬ ВАШИ МЕДИА-ЗАПРОСЫ (они не будут работать без скобок)

С

@media screen and max-width 600px {
    .headimager {
        display: none;
    }
}

@media screen and max-width 450px {
    .footimager {
        display: none;
    }
}

С

@media screen and (max-width:600px) {
    .headimager {
        display: none;
    }
}

@media screen and (max-width:450px) {
    .footimager {
        display: none;
    }
}

Я бы посоветовал использовать таблицу (# gradient-style). Простой 100% -ный div (#container) выполнит трюк с флотированными или% -ными вложенными элементами. Также текст в контейнере не будет автоматически обрезаться без пробела css wordwrap: break;

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

Ответ 2

Я не думаю, что doctype собирается изменить что-либо в этом случае, как прокомментировал Друй...

Лучший способ справиться с различными форм-факторами, такими как планшеты и мобильные телефоны, - это медиа-запросы, как вы уже это делали. Это может занять много писем, чтобы получить право, поэтому я предлагаю вам использовать фреймворк. Возможно, Bootstrap (http://getbootstrap.com/) является самым популярным на данный момент, но есть много фреймворков, которые справляются с грамотной деградацией рабочего стола до мобильных.

Если вы не хотите использовать фреймворк, минимальная ширина и максимальная ширина - ваш друг. они позволят элементам появляться ниже друг друга, а не рядом друг с другом.


Загрузите свой сайт Если мы посмотрим на ваш фрагмент кода, вам необходимо применить систему сетки Bootstrap. Если вы добавите бутстрап в свой код, css может переопределить кучу вещей или фактически уничтожить ваш макет сначала. Я мог бы взять определенную работу, чтобы получить это право. (другой lib мог бы быть лучше, но по сути они все одинаковы, поэтому я буду держать это в бутстрапе)

Bootstrap использует грид-систему (как и многие другие) для хранения элементов на месте и делает их изящно перемещаться по мере уменьшения размера окна просмотра. Bootstrap был создан с учетом "мобильных", это означает, что вы прокладываете себе путь от самого маленького окна просмотра до настольной машины. Это может показаться глупым/неинтуитивным с вашими идеями, но это очень практично в использовании. В Bootsrap есть несколько классов и идентификаторов, которые вы добавляете в свой HTML, и затем автоматически изменяет размер правильных компонентов. Он создает макеты из 12 столбцов. На большинстве веб-сайтов не будет 12 столбцов, поэтому вы создадите столбцы, которые охватывают 2 или более из 12 столбцов. http://getbootstrap.com/css/#grid показывает, что это действительно хорошо. Посмотрев на свой код, вы можете получить что-то вроде

<body>
    <div id="header_container" class="container"><!-- .container centers it -->
        <!-- see: http://getbootstrap.com/components/#navbar for navbar stuff -->
        <div id="header" class="navbar-header"> 
            <div class="headimage navbar-brand">
                <a href="http://website.com/" target="_blank">
                    <img alt="" class="headimager" src="http://placehold.it/350x95/" />
                </a>
            </div>
            [..]    
        </div>
    </div>
    <!-- .row and .col-* manage the grid system -->
    <div class="row">
      <div class="col-md-12 col-lg-12 col-sm-12 col-xs-12">
        The below help-help-help should be 3 columns on large screens, and stack on top of eachother on smaller resolutions
      </div>
    </div>
    <div class="row">
        <div class="col-md-4 col-lg-4 col-sm-12 col-xs-12">
          help 1
        </div>
        <div class="col-md-4 col-lg-4 col-sm-12 col-xs-12">
          help 2
        </div>
        <div class="col-md-4 col-lg-4 col-sm-12 col-xs-12">
          help 3
        </div>
    </div>
    <div id="footer_container">
        <div id="footer" class="row">
            <div class="footimage col-md-4 col-lg-4 col-sm-12 col-xs-12">
                <a href="http://website.com/" target="_blank">
                    <img alt="" class="footimager" src="http://placehold.it/350x95/" />
                </a>
            </div>
            <div class="footleft col-md-4 col-lg-4 col-sm-12 col-xs-12">
                <a class="def" href="javascript: void(0);"></a>
            </div>
            <div class="footright col-md-4 col-lg-4 col-sm-12 col-xs-12">
                <a class="abc" href="javascript: void(0);"></a>
            </div>
        </div>
    </div>
</body>

Это определенно другой способ мышления о дизайне сайта, но документация Bootstrap довольно ясна, и есть куча учебников (убедитесь, что они для Bootstrap3, а не bootstrap2. Есть некоторые большие различия)

О, и не отправляйте код с помощью <font> и <table> в качестве макета для SO. Это больно;)

Ответ 3

Оглядываясь, я нашел эти решения для прокручиваемых таблиц, взгляните и дайте мне знать, если это может помочь вам:

Прокрутка таблицы с помощью HTML и CSS

с помощью этого кода:

tbody{
 height: 400px;/*set the size you want*/
 overflow: auto;
}

его fiddle

и этот с jquery:

Просматриваемая CSS-таблица с фиксированными заголовками

и fiddle