ChatGPT解决这个技术问题 Extra ChatGPT

Is it possible to include one CSS file in another?

css

Is it possible to include one CSS file in another?

Just an fyi, doing this does not save an HTTP request. It just saves you from having to include the imported .css file somewhere else.
I would be almost the same as including another CSS before and not the best of practices

M
MultiplyByZer0

Yes:

@import url("base.css");

Note:

The @import rule must precede all other rules (except @charset).

Additional @import statements require additional server requests. As an alternative, concatenate all CSS into one file to avoid multiple HTTP requests. For example, copy the contents of base.css and special.css into base-special.css and reference only base-special.css.


v
viam0Zah

Yes. Importing CSS file into another CSS file is possible.

It must be the first rule in the style sheet using the @import rule.

@import "mystyle.css";
@import url("mystyle.css");

The only caveat is that older web browsers will not support it. In fact, this is one of the CSS 'hack' to hide CSS styles from older browsers.

Refer to this list for browser support.


e
eldarerathis

The @import url("base.css"); works fine but bear in mind that every @import statement is a new request to the server. This might not be a problem for you, but when optimal performance is required you should avoid the @import.


aren't CSS files cached? So it's only going to request the file once? seems trivial to worry about.
If you aren't minifying your css to one file then yeah you are correct but once it is then you are just calling one css file. Correct me if I'm wrong of course.
S
Sören Kuklau

The CSS @import rule does just that. E.g.,

@import url('/css/common.css');
@import url('/css/colors.css');

A
Arsen7

Yes.

@import "your.css";

The rule is documented here.


s
seanb

In some cases it is possible using @import "file.css", and most modern browsers should support this, older browsers such as NN4, will go slightly nuts.

Note: the import statement must precede all other declarations in the file, and test it on all your target browsers before using it in production.


D
DarenW

Yes, use @import

detailed info easily googled for, a good one at http://webdesign.about.com/od/beginningcss/f/css_import_link.htm


v
vidhi

yes it is possible using @import and providing the path of css file e.g.

@import url("mycssfile.css");

or

@import "mycssfile.css";

F
Floyd

@import("/path-to-your-styles.css");

That is the best way to include a css stylesheet within a css stylesheet using css.


C
Community

The "@import" rule could calls in multiple styles files. These files are called by the browser or User Agent when needed e.g. HTML tags call the CSS.

<!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" lang="EN" dir="ltr">
<head>
<title>Using @import</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<style type="text/css">
@import url("main.css");
</style>
</head>
<body>
</body>
</html>

CSS File "main.css" Contains The Following Syntax:

@import url("fineprint.css") print;
@import url("bluish.css") projection, tv;
@import 'custom.css';
@import url("chrome://communicator/skin/");
@import "common.css" screen, projection;
@import url('landscape.css') screen and (orientation:landscape);

To insert in style element use createTexNode don't use innerHTML but:

<script>
var style = document.createElement('style');
style.setAttribute("type", "text/css");
var textNode = document.createTextNode("
    @import 'fineprint.css' print;
    @import 'bluish.css' projection, tv;
    @import 'custom.css';
    @import 'chrome://communicator/skin/';
    @import 'common.css' screen, projection;
    @import 'landscape.css' screen and (orientation:landscape);
");
style.appendChild(textNode);
</script>

Just to point out, while @hylp is pointing out that it's possible to override classes from imports (classes projection and screen?) this is usually never a good thing to do. ;)
p
peterC_
@import url('style.css');

As opposed to the best answer, it is not recommended to aggregate all CSS files into one chunk when using HTTP/2.0


P
PythonProgrammi

Import bootstrap with altervista and wordpress

I use this to import bootstrap.css in altervista with wordpress

@import url("https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css");

and it works fine, as it would delete the html link rel code if I put it into a page


D
Dinesh Vaitage

I have created main.css file and included all css files in it.

We can include only one main.css file

@import url('style.css');
@import url('platforms.css');

N
NARGIS PARWEEN

Yes You can import easily one css to another (any where in website) You have to use like:

@import url("url_path");

k
kernal_lora

sing the CSS @import Rule here

@import url('/css/header.css') screen;
@import url('/css/content.css') screen;
@import url('/css/sidebar.css') screen;
@import url('/css/print.css') print;

C
Colin Keenan

For whatever reason, @import didn't work for me, but it's not really necessary is it?

Here's what I did instead, within the html:

  <link rel="stylesheet" media="print" href="myap-print.css">
  <link rel="stylesheet" media="print" href="myap-screen.css">
  <link rel="stylesheet" media="screen" href="myap-screen.css">

Notice that media="print" has 2 stylesheets: myap-print.css and myap-screen.css. It's the same effect as including myap-screen.css within myap-print.css.


No, this is not correct. This is including multiple CSS files from within an HTML file, not including a CSS file from within another CSS file.
W
WillSeitz

I stumbled upon this and I just wanted to say PLEASE DON'T USE @IMPORT IN CSS!!!! The import statement is sent to the client and the client does another request. If you want to divide your CSS between various files use Less. In Less the import statement happens on the server and the output is cached and does not create a performance penalty by forcing the client to make another connection. Sass is also an option another not one I have explored. Frankly, if you are not using Less or Sass then you should start. http://willseitz-code.blogspot.com/2013/01/using-less-to-manage-css-files.html


THe client will do another request, not another connection. And for the quality it is a good way to use import css. It is much better to have those imports instead of a big css file which grows and grows with the project...
Still - it's just one more request. Out of potentially hundreds for a complete page load.
Right?! One more request hardly warrants the arm-waving and the all-caps disclaimers. A request isn't bad practice. -1 to the answer -- LESS and SASS cargo cult.
Well, It's only one request more .. but you can import more CSS into one and they are downloaded parallelly.