하위 도메인을 기반으로 사용자 정의 가능한 CSS를 설정하려면 어떻게해야합니까?

G. 라오

단일 인스턴스 단일 데이터베이스 다중 테넌트 애플리케이션을 설정하고 있습니다. 백엔드는 Ruby on Rails로 작성되고 프론트 엔드는 Rails 프레임 워크가있는 AngularJS의 별도 앱입니다.

추상 부모 상태에 대한 해결을 사용하여 하위 도메인을 결정하고 이후에 테넌트를 결정합니다. 테넌트가 결정되면 프런트 엔드의 구성 파일에서 CSS 변수 값을 읽어 프로젝트의 나머지 부분에서 참조되는 클래스를 포함하는 기본 styles.css 파일을 생성하는 데 사용할 수 있기를 원합니다.

Sass 및 Less와 같은 CSS 전처리기를 사용하여이 작업을 수행 할 수 있다고 들었지만, 어느 쪽에도 경험이 없으며이를 설정하는 방법을 정확히 파악하려고 노력하고 있습니다.

몇 가지 도움말 / 코드 예제를 주시면 감사하겠습니다!

JakeParis

Sass 또는 Less는 브라우저가로드하기 전에 컴파일되기 때문에 원하는 작업을 수행하지 않습니다. 즉, 브라우저는 컴파일 된 css 파일 만로드합니다.

그러나 목표를 달성하는 몇 가지 방법이 있습니다. 저는 Ruby에 익숙하지 않으므로 서버 언어 제안을 일반적으로 유지하려고 노력할 것입니다. 나는 당신의 전체 상황을 알지 못하기 때문에 분명히 완전한 해결책이 아닙니다. 대신 이것들은 당신에게 약간의 단서를 줄 몇 가지 아이디어 일뿐입니다.

아마도 가장 좋은 방법은 서버 로직을 사용하여 body 태그에 다른 클래스를 적용한 다음 해당 클래스를 사용하여 페이지에 적용되는 스타일을 결정하는 것입니다. 예를 들면 다음과 같습니다.

/* probably a good idea to have fallback styles */
body {
  color: black;
  background: white;
  }

body.style-one p {
  color: red;
  background: blue;
  }

body.style-two p {
  color: blue;
  background: red;
  }
<body class="style-one">
  <p>This text will be red.</p>

물론 javascript를 사용하여 body 태그의 클래스를 변경할 수도 있으므로 사용자가 페이지의 테마를 변경할 수 있습니다.


또는 유사한 서버 로직을 사용 <link rel="stylesheet"...> 하여 하나 또는 다른 스타일 시트를 가져올 보조 태그를 작성할 수 있습니다 . 여기서 진정한 장점은 다양한 테마에 대한 많은 규칙이있는 경우 자체 파일에서 멋지게 분리하여 유지할 수 있다는 것입니다.


내가 사용한 마지막 방법 (php와 함께)은 GET 변수를 기반으로 즉석에서 스타일 시트를 생성하지만 스타일 시트를 CSS 파일로 인쇄하는 것입니다. 이 방법의 단점은 브라우저 캐싱 이점을 잃어버린 것 같습니다. 어쨌든 다음과 같이 보일 수 있습니다.

<?php
header("Content-Type: text/css");

if( $_GET['theme'] == 'one' ) {

  echo 'p { color: red; }';

} else {
  
  echo 'p { color: blue; }';
  
}
?>

a {
  color: green;
}
<link rel="stylesheet" href="style.css.php?theme=one">

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

사용자가 프로세스의 우선 순위를 부정적 수준으로 지정하도록 허용하려면 어떻게해야합니까?

분류에서Dev

컬렉션을 수정하고 컬렉션의 한 필드를 고유 한 GUID의 하위 문자열로 설정하려면 어떻게해야합니까?

분류에서Dev

문자열을 인쇄하기 위해 (아마도 키맵을 사용하여) atom에서 핫키를 설정하려면 어떻게해야합니까?

분류에서Dev

Excel 탭 간 전환을위한 바로 가기 키를 설정하려면 어떻게해야합니까?

분류에서Dev

CSS 래퍼가 높이를 자동으로 조정하도록하려면 어떻게해야합니까?

분류에서Dev

matplotlib 툴바의 사용자 정의 버튼에 기능을 추가하려면 어떻게해야합니까?

분류에서Dev

사용자가 Apex 5에서 로고를 동적으로 설정하도록하려면 어떻게해야합니까?

분류에서Dev

내 로컬 네트워크의 모든 사용자가 로컬에서 호스팅되는 사이트를 볼 수 있도록 '로컬'도메인을 설정하려면 어떻게해야합니까?

분류에서Dev

SwiftUI 구성에 대한 기본값을 제공하지만 사용자가이를 재정의하도록하려면 어떻게해야합니까?

분류에서Dev

사용자를 만들 때 기본 그룹을 설정하려면 어떻게해야합니까?

분류에서Dev

jbpm6에서 사용자 작업 기능을 사용하여 사용자 정의 된 도메인 별 프로세스를 생성하려면 어떻게해야합니까?

분류에서Dev

내 앱을 설치하거나 다운로드 한 사용자에 대한 세부 정보를 얻으려면 어떻게해야합니까?

분류에서Dev

Flutter 열의 위젯을 사용 가능한 크기로 축소하려면 어떻게해야합니까?

분류에서Dev

bind9를 사용하여 LAN에서 고유 한 사용자 지정 도메인을 사용하려면 어떻게해야합니까?

분류에서Dev

C ++에서 태그를 기반으로 특정 기능을 실행하려면 어떻게해야합니까?

분류에서Dev

SSRS가 포함 된 쿼리가 아닌 저장 프로 시저를 사용하도록 SQL Server 권한을 설정하려면 어떻게해야합니까?

분류에서Dev

mogrify를 사용하여 가장 큰 치수의 특정 픽셀 값을 대상으로 지정하려면 어떻게해야합니까? 수직이면 높이를 'x'로 설정하고 수평이면 너비를 'x'로 설정합니다.

분류에서Dev

도메인 자체가 S3로 설정된 경우 사용자 지정 하위 도메인을 github-pages 프로젝트로 리디렉션하려면 어떻게해야합니까?

분류에서Dev

queryString 매개 변수를 기반으로 Gatsby에서 사용자 정의 / 동적 정렬을 수행하려면 어떻게해야합니까?

분류에서Dev

react-draggable을 사용하여 드래그 한 구성 요소를 원래 위치로 재설정하려면 어떻게해야합니까?

분류에서Dev

이 진행자가 답변을 표시하도록하려면 어떻게해야합니까? 변수를 설정하기 위해 mutator를 사용하는 호출자 프로그램이 있습니다.

분류에서Dev

C #을 사용하여 여러 게임 개체의 위치를 다른 임의 위치로 설정하려면 어떻게해야합니까? (Unity5.5)

분류에서Dev

xfce가 사용 가능한 출력을 자동으로 조정하도록하려면 어떻게해야합니까?

분류에서Dev

확인란을 기반으로 다른 양식 필드를 설정하려면 어떻게해야합니까?

분류에서Dev

삼바 주 도메인 컨트롤러 역할을하도록 Ubuntu Server 10.04 LTS를 설정하려면 어떻게해야합니까? LDAP 서버에 대해 인증하기 위해 pam 모듈을 사용합니까?

분류에서Dev

삼바 주 도메인 컨트롤러 역할을하도록 Ubuntu Server 10.04 LTS를 설정하려면 어떻게해야합니까? LDAP 서버에 대해 인증하기 위해 pam 모듈을 사용합니까?

분류에서Dev

완전한 인증 후에 만 Symfony2에서 인증 된 사용자를 HTTPS로 강제 설정하려면 어떻게해야합니까?

분류에서Dev

사용자 정의 구문을 통합하기 위해 Sublime의 언어 구문 이해를 확장하려면 어떻게해야합니까?

분류에서Dev

모든 신규 사용자를 위해 Firefox를 기본 인터넷 브라우저로 설정하려면 어떻게해야합니까?

Related 관련 기사

  1. 1

    사용자가 프로세스의 우선 순위를 부정적 수준으로 지정하도록 허용하려면 어떻게해야합니까?

  2. 2

    컬렉션을 수정하고 컬렉션의 한 필드를 고유 한 GUID의 하위 문자열로 설정하려면 어떻게해야합니까?

  3. 3

    문자열을 인쇄하기 위해 (아마도 키맵을 사용하여) atom에서 핫키를 설정하려면 어떻게해야합니까?

  4. 4

    Excel 탭 간 전환을위한 바로 가기 키를 설정하려면 어떻게해야합니까?

  5. 5

    CSS 래퍼가 높이를 자동으로 조정하도록하려면 어떻게해야합니까?

  6. 6

    matplotlib 툴바의 사용자 정의 버튼에 기능을 추가하려면 어떻게해야합니까?

  7. 7

    사용자가 Apex 5에서 로고를 동적으로 설정하도록하려면 어떻게해야합니까?

  8. 8

    내 로컬 네트워크의 모든 사용자가 로컬에서 호스팅되는 사이트를 볼 수 있도록 '로컬'도메인을 설정하려면 어떻게해야합니까?

  9. 9

    SwiftUI 구성에 대한 기본값을 제공하지만 사용자가이를 재정의하도록하려면 어떻게해야합니까?

  10. 10

    사용자를 만들 때 기본 그룹을 설정하려면 어떻게해야합니까?

  11. 11

    jbpm6에서 사용자 작업 기능을 사용하여 사용자 정의 된 도메인 별 프로세스를 생성하려면 어떻게해야합니까?

  12. 12

    내 앱을 설치하거나 다운로드 한 사용자에 대한 세부 정보를 얻으려면 어떻게해야합니까?

  13. 13

    Flutter 열의 위젯을 사용 가능한 크기로 축소하려면 어떻게해야합니까?

  14. 14

    bind9를 사용하여 LAN에서 고유 한 사용자 지정 도메인을 사용하려면 어떻게해야합니까?

  15. 15

    C ++에서 태그를 기반으로 특정 기능을 실행하려면 어떻게해야합니까?

  16. 16

    SSRS가 포함 된 쿼리가 아닌 저장 프로 시저를 사용하도록 SQL Server 권한을 설정하려면 어떻게해야합니까?

  17. 17

    mogrify를 사용하여 가장 큰 치수의 특정 픽셀 값을 대상으로 지정하려면 어떻게해야합니까? 수직이면 높이를 'x'로 설정하고 수평이면 너비를 'x'로 설정합니다.

  18. 18

    도메인 자체가 S3로 설정된 경우 사용자 지정 하위 도메인을 github-pages 프로젝트로 리디렉션하려면 어떻게해야합니까?

  19. 19

    queryString 매개 변수를 기반으로 Gatsby에서 사용자 정의 / 동적 정렬을 수행하려면 어떻게해야합니까?

  20. 20

    react-draggable을 사용하여 드래그 한 구성 요소를 원래 위치로 재설정하려면 어떻게해야합니까?

  21. 21

    이 진행자가 답변을 표시하도록하려면 어떻게해야합니까? 변수를 설정하기 위해 mutator를 사용하는 호출자 프로그램이 있습니다.

  22. 22

    C #을 사용하여 여러 게임 개체의 위치를 다른 임의 위치로 설정하려면 어떻게해야합니까? (Unity5.5)

  23. 23

    xfce가 사용 가능한 출력을 자동으로 조정하도록하려면 어떻게해야합니까?

  24. 24

    확인란을 기반으로 다른 양식 필드를 설정하려면 어떻게해야합니까?

  25. 25

    삼바 주 도메인 컨트롤러 역할을하도록 Ubuntu Server 10.04 LTS를 설정하려면 어떻게해야합니까? LDAP 서버에 대해 인증하기 위해 pam 모듈을 사용합니까?

  26. 26

    삼바 주 도메인 컨트롤러 역할을하도록 Ubuntu Server 10.04 LTS를 설정하려면 어떻게해야합니까? LDAP 서버에 대해 인증하기 위해 pam 모듈을 사용합니까?

  27. 27

    완전한 인증 후에 만 Symfony2에서 인증 된 사용자를 HTTPS로 강제 설정하려면 어떻게해야합니까?

  28. 28

    사용자 정의 구문을 통합하기 위해 Sublime의 언어 구문 이해를 확장하려면 어떻게해야합니까?

  29. 29

    모든 신규 사용자를 위해 Firefox를 기본 인터넷 브라우저로 설정하려면 어떻게해야합니까?

뜨겁다태그

보관