Part of the CSS Cleanup: http://drupal.org/node/1089868
Overview of Goals
- Make it easy to remove unwanted design assumptions in the theme layer, while maintaining critical functionality (such as functional JavaScript widgets).
- Prevent uneeded administrative styles from loading on the front end.
- Give modules the ability to include a generic design implementation with their module, without burdening themers.
- Make CSS and related markup more efficient and less intrusive to improve the themer experience.
The CSS Clean-up Process
Use the following guidelines when writing patches for the core issues listed below.
- Put CSS is in the appropriate file: CSS should be moved to separate files, using the following guidelines extracted from CSS file organization (for Drupal 8):
CSS files for Drupal modules
All of a module's styles should be placed in a
css/
sub-directory and broken into one or more of the following files:module_name.module.css
: This file should hold the minimal styles needed to get the module's functionality working. This includes layout, component and state styles. Any needed RTL styling would go in a file namedmodule_name.module-rtl.css
.module_name.skin.css
: This file should hold extra styles to make the module's functionality aesthetically pleasing. This usually just consists of skin styles. Any needed RTL styling would go in a file namedmodule_name.skin-rtl.css
.module_name.admin.css
: This file should hold the minimal styles needed to get the module's admin screens working. This includes layout, component and state styles. On admin screens, the module may choose to load the *.module.css in addition to the *.admin.css file. Any needed RTL styling would go in a file namedmodule_name.admin-rtl.css
.module_name.admin.skin.css
: This file should hold extra styles to make the module's admin screens aesthetically pleasing. This usually just consists of skin styles. Any needed RTL styling would go in a file namedmodule_name.admin.skin-rtl.css
.Note: Modules should never have any base styles. Drupal core's modules do not have any base styles. Instead Drupal core uses the Normalize.css library augmented with a drupal.base.css library.
If a module attaches a CSS file to a template file, the CSS file should be named the same as the template file, e.g. the system-plugin-ui-form.html.twig CSS file should be named system-plugin-ui-form.css
- Remove Assumptions: Styles that make too many assumptions, introduce superflous margins, padding and add things like font settings are not necessary and don't belong in core module CSS files. In cases where core themes depend on these properties, they should be moved to the CSS stylesheet of the respective theme.
- Reduce Selector Specificity: CSS code that resides in modules should be written in a way that's easily overridable in the theme layer. To improve the Themer Experience and make core CSS more efficient, CSS selectors should be made as general and short as possible. For example:
- Use
.style {}
overdiv.style {}
where possible. - Use
.module .style {}
overdiv.module div.somenestedelement .style
where possible.
- Use
- Don't use IDs in selectors: Use of ID's in core CSS selectors requires more specificity in the theme layer, making it harder and more annoying to deal with. It makes achieveing consistency in complex design implementations much harder than it needs to be. We need to stop making life hard for theme developers.
- Don't be afraid to change markup: There's lots of overlap between using proper and semantic markup and doing CSS right. If you come across a case where CSS is being applied where using a more semantic elements would solve the problem, then change the markup in your patch to make it right. For more information, see the Drupal 8 Markup Gate rules.
- Start with Stark and cross-browser test.
- "Design" markup and CSS for the Stark theme.
- If applicable, adapt the styles to match the core themes afterward.
- Finally, test the changes in all supported browsers and ensure no regressions are introduced.
Comment | File | Size | Author |
---|---|---|---|
#6 | openid-cleanup-1217016-6.patch | 5.75 KB | dcmouyard |
#2 | openid-1217016-2.patch | 1.52 KB | betz |
Comments
Comment #1
betz CreditAttribution: betz commentedOpenID adds a new item_list next to the existing list with the 'Create new account' & 'Request new password' links.
This is needed because the list is html #markup instead of an unrendered item_list theme function.
I created a patch at #1324972: Change user block links to item_list instead of markup.
If this patch gets committed, we can add the 2 OpenID links to the original user module list and update the OpenID javascript to this new markup.
So if someone wants to review this patch...
Thanks
Comment #2
betz CreditAttribution: betz commentedIf the patch on #1324972: Change user block links to item_list instead of markup. is committed, OpenID can add the 'Create new account' & 'Request new password' links to the default list that user.module generates, instead of creating a new list next to it.
This patch does this, plus i altered the jquery and css selectors for the new, cleaner markup.
Comment #4
JacineThanks @betz. The patch doesn't apply though. Can you please re-roll it?
Comment #5
JacineAlso, more work needs to be done here. See the issue summary for details about how the styles should be split up. This should ultimately end up with a openid.base.css and openid.theme.css.
Comment #6
dcmouyard CreditAttribution: dcmouyard commentedI created this patch from scratch, since the previous patch didn't include the necessary jQuery changes and the .module changes only worked on the login block, not the other login forms.
Cleaned up the css and separated them into base and theme styles sheets. I was surprised at the number of styles I could safely remove...
Comment #7
c960657 CreditAttribution: c960657 commented#6: openid-cleanup-1217016-6.patch queued for re-testing.
Comment #8.0
(not verified) CreditAttribution: commentedUpdated issue summary.
Comment #9
ry5n CreditAttribution: ry5n commentedLooks like OpenID has been removed from core, so we shouldn’t have to worry about cleaning up the CSS.
Comment #10
betz CreditAttribution: betz commentedthat is also a solution :)
Comment #10.0
betz CreditAttribution: betz commentedUpdated summary to the latest CSS organization guidelines.