私は、サイトを更新して応答性を高め、スマートフォンで正しく表示されるようにする必要があります。残念ながら、現在の形式のサイトは操作が簡単ではありません。CSSを変更するだけではできません。
ブラウザのサイズを検出してjQueryでCSSを変更することは悪いことと考えられていますか?
例えば:
if ($(window).width() < 960) {
//make heaps of CSS changes
}
私は、サイトを更新して応答性を高め、スマートフォンで正しく表示されるようにする必要があります。残念ながら、現在の形式のサイトは操作が簡単ではありません。CSSを変更するだけではできません。
ブラウザのサイズを検出してjQueryでCSSを変更することは悪いことと考えられていますか?
例えば:
if ($(window).width() < 960) {
//make heaps of CSS changes
}
回答:
承知しました。もちろん、CSSを単独で使用する方が適切ですが、使用できない場合は、既存のものを使用してください。CSSでできる限りのことを行い、必要に応じてJSを使用してください。既存のCSSを変更できない理由はわかりませんが、JSでスタイルシートを追加できます。
(function() {
//create a new element
var newStyle = document.createElement("link");
//set the required attribute for a valid css file
newStyle.rel = "stylesheet";
newStyle.href = "http://example.com/the/location/of/your/css/stylesheet.css";
//and then append it to the <head>
document.getElementsByTagName("head")[0].appendChild(newStyle);
})();
ソース:http://christian-fei.com/add-stylesheets-after-the-head-using-javascript/
次に、CSS /メディアクエリを実行します。
またはjQueryを使用:
$('head').append('<link rel="stylesheet" type="text/css" href="{url}">');
私は、DOMを変更せずには実行できないことがあるレスポンシブな「スキン」を実行しました。HTMLにアクセスできない場合、JS DOM操作が唯一の答えになることがあります。
編集:
小さな画面バージョンの視覚的要件によっては、このCSSスニペットが「モバイルフレンドリー」への道のりをどのくらい遠くまで行くのか驚くかもしれません。
/* hopefully the original CSS developer didn't include a bunch of !importants.*/
div, p, ul, table, img {
float: none !important;
max-width: 96% !important; /* breathing room on the sides */
margin-left: auto
margin-right: auto;
}
元のCSS開発者が非常に気に入って!important
いて、HTMLにアクセスできない場合は、jQuery / JSを使用して本体または高レベルのコンテナーにIDを追加し、それをセレクターに追加できます。
#i-will-beat-you-important div,
#i-will-beat-you-important p,
#i-will-beat-you-important ul {
float: none !important;
...
}
最初にメディアクエリを使用してみます。もともとデスクトップ専用であったデザインを扱うときに私が見つけた1つの方法は次のとおりです。
2つの別個のスタイルシートから始めます。1つは新しいレスポンシブデザイン用で、もう1つは古いデスクトップバージョン用です。
<link rel="stylesheet" media="screen and (max-width: 959px)" href="css/mobile.css">
<link rel="stylesheet" media="screen and (min-width: 960px)" href="css/desktop.css">
古いスタイルはすべてdesktop.cssに含めることができます。その間、mobile.cssをゼロから始めることができます。タブレットでも機能するモバイルCSSで、1列のレイアウトを作成できることがわかります。
このアプローチにより、新たなスタートを切ることができ、特にモバイルとタブレットのみにスタイルを適用でき、デスクトップスタイルを介してスタイルを変更することはできません。あなただけのモバイルのために必要に応じて要素を非表示/表示/配置することができます。
モバイルとデスクトップで動作するようにデスクトップコードを変更する必要がある場合は、マークアップをリファクタリングできます。または、レスポンシブバージョンとモバイルバージョンの両方でHTMLを現実的にリファクタリングできない場合は、デスクトップコードにクラス「desktop」などのクラスを配置し、モバイルバージョンでCSSを使用して非表示にできます。次に、そのセクションの新しいHTMLをいくつか記述して、を指定しclass="mobile"
ます。そして、スタイル、それに応じてでmobile.cssとでそれを隠すdesktop.css。
応答性と「スマートフォンで正しく表示される」は、まったく別のタスクです。
それはスタイリングの主なソースであってはなりません。それがCSSの仕事です。ただし、2つを併用すると効果的です。簡単な例では、アクションの結果に応じてテキストのスタイルが異なる場合があります。jQueryを使用して、CSS定義クラスを変更できます。
$('#result').removeClass('red').addClass('green');
私たちは、サイトで人気のある960.gs cssフレームワークを使用していました。
レスポンシブにしたかったのです。
誰かが960 gs用のJSベースのレスポンシブプラグインを作成したので、構造サイトテンプレートに変更を加える必要がないため、それを使用しないのはなぜかと考えました。
それは機能しましたが、良いものを含むほとんどのブラウザで遅れました。通常、ページの複雑さに応じて大きく異なる「スタイルのないコンテンツのフラッシュ」が表示されます。
JSソリューションは機能していますが、理想的ではありませんが、可能であればCSS 3メディアクエリが最適です。最後に、Twitter Bootstrapを使用してサイトテンプレートを作り直しました。これは、私たちのニーズに非常に適していました。
近道をするのは不快なことかもしれませんが、長い目で見れば、多くの場合、より多くの時間と痛みを伴います。