응답 성이 있고 스마트 폰에 올바르게 표시되도록 사이트를 업데이트해야했습니다. 불행히도 현재 형식의 사이트는 다루기가 쉽지 않습니다. 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;
...
}
미디어 쿼리를 먼저 사용해보십시오. 원래 데스크톱 전용 디자인을 다룰 때 더 쉬운 방법은 다음과 같습니다.
두 개의 별도 스타일 시트로 시작하십시오. 하나는 새로운 반응 형 디자인을위한 것이고 다른 하나는 이전 데스크탑 버전을위한 것입니다.
<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에서 멋진 단일 열 레이아웃을 만들 수 있습니다.
이 접근 방식을 사용하면 새로 시작할 수 있으며 모바일 및 태블릿 전용으로 스타일을 지정할 수 있으며 데스크탑 스타일을 사용하지 않고 물건을 재정의하지 않아도됩니다. 모바일에서만 필요에 따라 요소를 숨기거나 표시 / 위치시킬 수 있습니다.
모바일 및 데스크탑에서 작동하도록 데스크탑 코드를 변경해야하는 경우 마크 업을 리팩터링 할 수 있습니다. 또는 반응 형 버전과 모바일 버전 모두에 대해 HTML을 사실적으로 리팩터링 할 수없는 경우 데스크톱 코드에 클래스 (예 : 클래스 "desktop")를 배치하고 모바일 버전에서 CSS를 사용하여 HTML을 숨길 수 있습니다. 그런 다음 해당 섹션에 대한 새로운 HTML을 작성하고에 제공하십시오 class="mobile"
. 그런 다음 mobile.css 에서 스타일 을 지정하고 desktop.css 에서 숨 깁니다 .
응답 성과 "스마트 폰에 올바르게 표시"는 완전히 다른 작업입니다.
스타일링의 주요 소스가되어서는 안됩니다. 이것이 CSS의 일입니다. 그러나이 두 가지를 효과적으로 함께 사용할 수 있습니다. 간단한 예에서, 일부 동작의 결과에 따라 텍스트의 스타일이 다르게 나타날 수 있습니다. jQuery를 사용하여 CSS 정의 클래스를 변경할 수 있습니다.
$('#result').removeClass('red').addClass('green');
우리는 우리 사이트에 널리 사용되는 960.gs CSS 프레임 워크 를 사용했습니다 .
우리는 그것을 반응 적으로 만들고 싶었습니다.
누군가가 960 gs를위한 JS 기반 반응 형 플러그인을 만들었 으므로 우리는 구조적 사이트 템플릿을 변경할 필요가 없기 때문에 왜 이것을 사용하지 않는지를 생각했습니다.
그것은 효과가 있었지만 좋은 브라우저를 포함하여 대부분의 브라우저에서 게으르다. 일반적으로 페이지 복잡성에 따라 크게 달라지는 '스타일이 지정되지 않은 콘텐츠의 플래시'가 나타납니다.
JS 솔루션이 작동하기는하지만 이상적이지는 않지만 가능한 경우 CSS 3 미디어 쿼리가 최선의 선택입니다. 결국 우리는 Twitter Bootstrap 을 사용하여 사이트 템플릿을 다시 얻었으며 우리 의 요구에 매우 적합했습니다.
짧게 자르는 것이 어려울 수도 있지만 장기적으로 더 많은 시간이 걸리고 고통 스럽습니다.