se

Enlightenment Reformation : Hutchinsonianism and religion in eighteenth-century Britain / Derya Gurses Tarbuck

Gurses Tarbuck, Derya, author




se

Richard Hooker, beyond certainty / Andrea Russell (the Queen's Foundation for Ecumenical Theological Education, Birmingham, UK)

Russell, Andrea, author




se

Forensic Science and Humanitarian Action: Interacting with the Dead and the Living, 2 Volume Set


 

Widens traditional concepts of forensic science to include humanitarian, social, and cultural aspects

Using the preservation of the dignity of the deceased as its foundation, Forensic Science and Humanitarian Action: Interacting with the Dead and the Living is a unique examination of the applications of humanitarian forensic science. Spanning two comprehensive volumes, the text is sufficiently detailed for forensic practitioners, yet accessible enough



Read More...




se

Open and Toroidal Electrophoresis: Ultra-High Separation Efficiencies in Capillaries, Microchips and Slabs


 

Presents the theory and applications of Toroidal Capillary, Microchip, and Slab Electrophoresis to analytical chemists across a range of disciplines

Written by one of the developers of Toroidal Capillary Electrophoresis (TCE), this book is the first to present this novel analytical technique, in detail, to the field of analytical chemistry.

The exact expressions of separation efficiency, resolution, peak capacity, and many other performance indicators



Read More...




se

Nanobiosensors: From Design to Applications


 

Containing cutting edge research on the hot topic of nanobiosensor, this book will become highly read

Biosensor research has recently re-emerged as most vibrant area in recent years particularly after the advent of novel nanomaterials of multidimensional features and compositions. Nanomaterials of different types and striking properties have played a positive role in giving the boost and accelerated pace to biosensors development technology.



Read More...




se

Secondary Metabolites of Medicinal Plants: Ethnopharmacological Properties, Biological Activity and Production Strategies, 4 Volume Set


 
Covers the structurally diverse secondary metabolites of medicinal plants, including their ethnopharmacological properties, biological activity, and production strategies

Secondary metabolites of plants are a treasure trove of novel compounds with potential pharmaceutical applications. Consequently, the nature of these metabolites as well as strategies for the targeted expression and/or purification is of high interest. Regarding their biological and

Read More...




se

Welcome to the Genome: A User's Guide to the Genetic Past, Present, and Future, 2nd Edition


 

The popular introduction to the genomic revolution for non-scientists—the revised and updated new edition

Welcome to the Genome is an accessible, up-to-date introduction to genomics—the interdisciplinary field of biology focused on the structure, function, evolution, mapping, and editing of an organism's complete set of DNA. Written for non-experts, this user-friendly book explains how genomes are sequenced and explores the discoveries and challenges



Read More...




se

Superior performance of surface-treated NaX@Pebax-1657 membranes for O2/N2 separation

RSC Adv., 2020, 10,17061-17069
DOI: 10.1039/D0RA02255A, Paper
Open Access
Mohammad Salehi Maleh, Ahmadreza Raisi
In this study, the performances of mixed matrix composite membranes (MMCMs) containing surface-treated NaX nanocrystals (ST-NaX-NCs) were experimentally and theoretically investigated for O2/N2 separation.
The content of this RSS Feed (c) The Royal Society of Chemistry




se

Nanocomposite liposomes for pH-controlled porphyrin release into human prostate cancer cells

RSC Adv., 2020, 10,17094-17100
DOI: 10.1039/D0RA00846J, Paper
Open Access
German V. Fuentes, Eric N. Doucet, Alyson Abraham, Nikki K. Rodgers, Felix Alonso, Nelson Euceda, Michael H. Quinones, Penelope A. Riascos, Kristelle Pierre, Nuhash H. Sarker, Manya Dhar-Mascareno, Mircea Cotlet, Kim Kisslinger, Fernando Camino, Mingxing Li, Fang Lu, Ruomei Gao
Nanocomposite liposomes are relatively stable in weak basic solutions but effectively release porphyrins at acidic pH, as indicated by the difference in fluorescence.
The content of this RSS Feed (c) The Royal Society of Chemistry




se

An ionic diode based on a spontaneously formed polypyrrole-modified graphene oxide membrane

RSC Adv., 2020, 10,17079-17084
DOI: 10.1039/D0RA01145B, Paper
Open Access
Rifeng Luo, Tianliang Xiao, Wenping Li, Zhaoyue Liu, Yao Wang
We described an ionic diode based on polypyrrole-modified graphene oxide membrane, which was prepared by a spontaneous oxidation polymerization of pyrrole monomers.
The content of this RSS Feed (c) The Royal Society of Chemistry




se

A concise and sequential synthesis of the nitroimidazooxazole based drug, Delamanid and related compounds

RSC Adv., 2020, 10,17085-17093
DOI: 10.1039/D0RA01662D, Paper
Open Access
Sumit Sharma, Radhika Anand, Pankaj Singh Cham, Sushil Raina, Ram. A. Vishwakarma, Parvinder Pal Singh
A concise, protection-group free and sequential route has been developed for the synthesis of the nitroimidazole based FDA-approved multi-drug resistant anti-tuberculosis drug, Delamanid and anti-leishmanial lead candidate VL-2098.
The content of this RSS Feed (c) The Royal Society of Chemistry




se

A high-throughput and untargeted lipidomics approach reveals new mechanistic insight and the effects of salvianolic acid B on the metabolic profiles in coronary heart disease rats using ultra-performance liquid chromatography with mass spectrometry

RSC Adv., 2020, 10,17101-17113
DOI: 10.1039/D0RA00049C, Paper
Open Access
Ying-peng Li, Cong-ying Wang, Hong-tao Shang, Rui-rui Hu, Hui Fu, Xue-feng Xiao
High-throughput lipidomics provides the possibility for the development of new therapeutic drugs.
The content of this RSS Feed (c) The Royal Society of Chemistry




se

Hydroxyethyl sulfone based reactive coalescing agents for low-VOC waterborne coatings

RSC Adv., 2020, 10,17171-17179
DOI: 10.1039/D0RA00753F, Paper
Open Access
Jagjit Kaur, Ranganathan Krishnan, Balamurugan Ramalingam, Satyasankar Jana
Hydroxyethyl sulfone based compounds were revealed to exhibit characteristics of reactive coalescing agents towards application in environmentally-benign water borne coatings.
The content of this RSS Feed (c) The Royal Society of Chemistry




se

Dendrimer crown-ether tethered multi-wall carbon nanotubes support methyltrioxorhenium in the selective oxidation of olefins to epoxides

RSC Adv., 2020, 10,17185-17194
DOI: 10.1039/D0RA02785E, Paper
Open Access
  This article is licensed under a Creative Commons Attribution 3.0 Unported Licence.
Bruno Mattia Bizzarri, Angelica Fanelli, Lorenzo Botta, Claudia Sadun, Lorenzo Gontrani, Francesco Ferella, Marcello Crucianelli, Raffaele Saladino
Benzo-15-crown-5 ether supported on multi-wall carbon nanotubes (MWCNTs) by tethered poly(amidoamine) (PAMAM) dendrimers efficiently coordinated methyltrioxorhenium in the selective oxidation of olefins to epoxides.
The content of this RSS Feed (c) The Royal Society of Chemistry




se

Impact of ammonium sulfite-based sequential pretreatment combinations on two distinct saccharifications of wheat straw

RSC Adv., 2020, 10,17129-17142
DOI: 10.1039/D0RA01759K, Paper
Open Access
Guang Yu, Shiyue Liu, Xiaoyan Feng, Yuedong Zhang, Chao Liu, Ya-Jun Liu, Bin Li, Qiu Cui, Hui Peng
The impact of substrate properties on wheat straw sugar release from fungal cellulase and whole cell-based CBS was comparatively investigated.
The content of this RSS Feed (c) The Royal Society of Chemistry




se

Surface modification of a PES membrane by corona air plasma-assisted grafting of HB-PEG for separation of oil-in-water emulsions

RSC Adv., 2020, 10,17143-17153
DOI: 10.1039/D0RA02032J, Paper
Open Access
Hooman Adib, Ahmadreza Raisi
The main goal of this study is to modify a polyethersulfone (PES) membrane by grafting with hyperbranched polyethylene glycol (HB-PEG) using corona air plasma to intensify the anti-fouling properties of the prepared membrane.
The content of this RSS Feed (c) The Royal Society of Chemistry




se

Switching Xe/Kr adsorption selectivity in modified SBMOF-1: a theoretical study

RSC Adv., 2020, 10,17195-17204
DOI: 10.1039/D0RA02212H, Paper
Open Access
Jiao-jiao Qian, Guang-hui Chen, Song-tao Xiao, Hui-bo Li, Ying-gen Ouyang, Qiang Wang
The separation of Xe/Kr mixtures in used nuclear fuel (UNF) has attracted lots of attention, but no report on the adsorption and separation of Kr from mixed Kr/Xe at room temperature can be found.
The content of this RSS Feed (c) The Royal Society of Chemistry




se

Room-temperature synthesis and CO2-gas sensitivity of bismuth oxide nanosensors

RSC Adv., 2020, 10,17217-17227
DOI: 10.1039/D0RA00801J, Paper
Open Access
Pritamkumar V. Shinde, Nanasaheb M. Shinde, Shoyebmohamad F. Shaikh, Damin Lee, Je Moon Yun, Lee Jung Woo, Abdullah M. Al-Enizi, Rajaram S. Mane, Kwang Ho Kim
Room-temperature (27 °C) synthesis and carbon dioxide (CO2)-gas-sensing applications of bismuth oxide (Bi2O3) nanosensors obtained via a direct and superfast chemical-bath-deposition method (CBD) with different surface areas and structures.
The content of this RSS Feed (c) The Royal Society of Chemistry




se

A superhydrophilic bilayer structure of a nylon 6 nanofiber/cellulose membrane and its characterization as potential water filtration media

RSC Adv., 2020, 10,17205-17216
DOI: 10.1039/D0RA01077D, Paper
Open Access
Ahmad Fauzi, Dian Ahmad Hapidin, Muhammad Miftahul Munir, Ferry Iskandar, Khairurrijal Khairurrijal
The SEM image of (a) cellulose membrane and (b) the bilayer structure of a nylon 6 nanofibrous membrane on a cellulose membrane as water filter media.
The content of this RSS Feed (c) The Royal Society of Chemistry




se

Structural, optical and photocatalytic properties of erbium (Er3+) and yttrium (Y3+) doped TiO2 thin films with remarkable self-cleaning super-hydrophilic properties

RSC Adv., 2020, 10,17247-17254
DOI: 10.1039/D0RA02242J, Paper
Open Access
Raquel da Silva Cardoso, Suélen Maria de Amorim, Gidiane Scaratti, Camilla Daniela Moura-Nickel, Rodrigo Peralta Muniz Moreira, Gianluca Li Puma, Regina de Fatima Peralta Muniz Moreira
The self-cleaning and super hydrophilic properties of pristine TiO2 and of TiO2 doped with Er3+ or Y3+ transparent thin films deposited onto glass substrates were investigated.
The content of this RSS Feed (c) The Royal Society of Chemistry




se

Theoretical study of D–A'–π–A/D–π–A'–π–A triphenylamine and quinoline derivatives as sensitizers for dye-sensitized solar cells

RSC Adv., 2020, 10,17255-17265
DOI: 10.1039/D0RA01040E, Paper
Open Access
  This article is licensed under a Creative Commons Attribution 3.0 Unported Licence.
Ying Zhang, Ji Cheng, Wang Deng, Bin Sun, Zhixin Liu, Lei Yan, Xueye Wang, Baomin Xu, Xingzhu Wang
We have designed four dyes based on D–A'–π–A/D–π–A'–π–A triphenylamine and quinoline derivatives for DSSCs and studied their optoelectronic properties as well as the effects of the introduction of alkoxy groups and thiophene group on the properties.
The content of this RSS Feed (c) The Royal Society of Chemistry




se

Stable antibacterial polysaccharide-based hydrogels as tissue adhesives for wound healing

RSC Adv., 2020, 10,17280-17287
DOI: 10.1039/D0RA02017F, Paper
Open Access
Xiaoxuan Tang, Xinyi Gu, Yaling Wang, Xiaoli Chen, Jue Ling, Yumin Yang
By combination of alginate/polyacrylamide/chitosan, tough antibacterial hydrogels are designed for applications as tissues adhesives to promote wound healing.
The content of this RSS Feed (c) The Royal Society of Chemistry




se

Correction: Insects (Thrips hawaiiensis (Morgan)) change the stereochemical configuration of 1-phenylethanol emitted from tea (Camellia sinensis) flowers

RSC Adv., 2020, 10,17058-17060
DOI: 10.1039/D0RA90047H, Correction
Open Access
  This article is licensed under a Creative Commons Attribution 3.0 Unported Licence.
Ying Zhou, Lanting Zeng, Yinyin Liao, Fang Dong, Qiyuan Peng, Jianlong Li, Jinchi Tang, Naoharu Watanabe, Ziyin Yang
The content of this RSS Feed (c) The Royal Society of Chemistry




se

Wrist flexible heart pulse sensor integrated with a soft pump and a pneumatic balloon membrane

RSC Adv., 2020, 10,17353-17358
DOI: 10.1039/D0RA02316G, Paper
Open Access
Takafumi Yamaguchi, Daisuke Yamamoto, Takayuki Arie, Seiji Akita, Kuniharu Takei
Wearable and flexible heart pulse sensor is proposed to monitor the detailed pulse signal from a wrist stably and reliably by integrating a tactile pressure sensor and a soft pneumatic balloon operated by a soft pump.
The content of this RSS Feed (c) The Royal Society of Chemistry




se

Exploring a lead-free organic–inorganic semiconducting hybrid with above-room-temperature dielectric phase transition

RSC Adv., 2020, 10,17492-17496
DOI: 10.1039/C9RA09289G, Paper
Open Access
  This article is licensed under a Creative Commons Attribution 3.0 Unported Licence.
Yuyin Wang, Shiguo Han, Xitao Liu, Zhenyue Wu, Zhihua Sun, Dhananjay Dey, Yaobin Li, Junhua Luo
Recently, organic–inorganic hybrid lead halide perovskites have attracted great attention for optoelectronic applications, such as light-emitting diodes, photovoltaics and optoelectronics.
The content of this RSS Feed (c) The Royal Society of Chemistry




se

Hydrogen bonding sewing interface

RSC Adv., 2020, 10,17438-17443
DOI: 10.1039/D0RA00366B, Paper
Open Access
Zhenxing Cao, Zhigong Song, Fengzhi Liang, Xiaoguang An, Karrar K. Al-Quraishi, Min Wang, Jianchao Chen, Dong Ding, Yingchao Yang
Hydrogen bonding and van der Waals (vdW) forces have been precisely measured and distinguished by an in-house nanomechanical testing system.
The content of this RSS Feed (c) The Royal Society of Chemistry




se

Deposition of an ultra-thin polyaniline coating on a TiO2 surface by vapor phase polymerization for electrochemical glucose sensing and photocatalytic degradation

RSC Adv., 2020, 10,17387-17395
DOI: 10.1039/D0RA01571G, Paper
Open Access
  This article is licensed under a Creative Commons Attribution 3.0 Unported Licence.
Sibani Majumdar, Debajyoti Mahanta
Here, we have synthesized an ultra-thin coating of polyaniline on a TiO2 nanoparticle surface (PANI–TiO2) using a simple vapor phase polymerization method.
The content of this RSS Feed (c) The Royal Society of Chemistry




se

Copper–tripeptides (cuzymes) with peroxidase-mimetic activity

RSC Adv., 2020, 10,17408-17415
DOI: 10.1039/D0RA02472D, Paper
Open Access
Le Truc Nguyen, Wing Fat Ho, Kun-Lin Yang
Copper–tripeptide complexs (cuzyme) exhibited peroxidase-like activities that use hydrogen peroxide to oxidize substrates such as 2,2-azino-bis(3-ethylbenzothiazoline-6-sulfonic acid) (ATBS) and trypan blue dye.
The content of this RSS Feed (c) The Royal Society of Chemistry




se

One pot fabrication of fluorescein functionalized manganese dioxide for fluorescence “Turn OFF–ON” sensing of hydrogen peroxide in water and cosmetic samples

RSC Adv., 2020, 10,17506-17514
DOI: 10.1039/D0RA01980A, Paper
Open Access
  This article is licensed under a Creative Commons Attribution 3.0 Unported Licence.
Hassan Refat H. Ali, Ahmed I. Hassan, Yasser F. Hassan, Mohamed M. El-Wekil
The fluorometric nanoprobe was fabricated via doping of fluorescein dye in MnO2 nanosheets (FLS/MnO2 NS) via facile co-precipitation method. It was used for analysis of H2O2 in different matrices through liberation of FLS after reduction of MnO2 NS.
The content of this RSS Feed (c) The Royal Society of Chemistry




se

A dopamine electrochemical sensor based on a platinum–silver graphene nanocomposite modified electrode

RSC Adv., 2020, 10,17336-17344
DOI: 10.1039/C9RA11056A, Paper
Open Access
  This article is licensed under a Creative Commons Attribution 3.0 Unported Licence.
Nadzirah Sofia Anuar, Wan Jeffrey Basirun, Md. Shalauddin, Shamima Akhter
A platinum–silver graphene nanocomposite was synthesized and characterized. A nanocomposite modified electrode was fabricated in order to investigate the electrochemical detection of dopamine.
The content of this RSS Feed (c) The Royal Society of Chemistry




se

Development of novel N-(6-methanesulfonyl-benzothiazol-2-yl)-3-(4-substituted-piperazin-1-yl)-propionamides with cholinesterase inhibition, anti-β-amyloid aggregation, neuroprotection and cognition enhancing properties for the therapy of Alzheimer's d

RSC Adv., 2020, 10,17602-17619
DOI: 10.1039/D0RA00663G, Paper
Open Access
Chandra Bhushan Mishra, Shruti Shalini, Siddharth Gusain, Amresh Prakash, Jyoti Kumari, Shikha Kumari, Anita Kumari Yadav, Andrew M. Lynn, Manisha Tiwari
A novel series of benzothiazole–piperazine hybrids were rationally designed, synthesized, and evaluated as multifunctional ligands against Alzheimer's disease (AD).
The content of this RSS Feed (c) The Royal Society of Chemistry




se

Polypyrrole modified magnetic reduced graphene oxide composites: synthesis, characterization and application for selective lead adsorption

RSC Adv., 2020, 10,17524-17533
DOI: 10.1039/D0RA01546F, Paper
Open Access
Zhanmeng Liu, Zhimin Gao, Lichun Xu, Fengping Hu
Compared to Fe3O4/rGO, the PPy-FG composites showed desirable adsorption capacity and selectivity for Pb(II) from water.
The content of this RSS Feed (c) The Royal Society of Chemistry




se

Selective modification of Ti6Al4V surfaces for biomedical applications

RSC Adv., 2020, 10,17642-17652
DOI: 10.1039/C9RA11000C, Paper
Open Access
Gabriela Melo Rodriguez, James Bowen, Mischa Zelzer, Artemis Stamboulis
The surface of a medical implant is required to interact favourably with ions, biomolecules and cells in vivo, commonly resulting in the formation of the extracellular matrix.
The content of this RSS Feed (c) The Royal Society of Chemistry




se

Dip-coating decoration of Ag2O nanoparticles on SnO2 nanowires for high-performance H2S gas sensors

RSC Adv., 2020, 10,17713-17723
DOI: 10.1039/D0RA02266G, Paper
Open Access
  This article is licensed under a Creative Commons Attribution 3.0 Unported Licence.
Tran Thi Ngoc Hoa, Nguyen Van Duy, Chu Manh Hung, Nguyen Van Hieu, Ho Huu Hau, Nguyen Duc Hoa
Ag2O nanoparticles decorated on the surface of on-chip growth SnO2 nanowires by a dip-coating method possessed excellent sensing performance for H2S gas.
The content of this RSS Feed (c) The Royal Society of Chemistry




se

Correction: Synthesis of α,β-unsaturated esters of perfluoropolyalkylethers (PFPAEs) based on hexafluoropropylene oxide units for photopolymerization

RSC Adv., 2020, 10,17416-17417
DOI: 10.1039/D0RA90036B, Correction
Open Access
  This article is licensed under a Creative Commons Attribution 3.0 Unported Licence.
Céline Bonneaud, Mélanie Decostanzi, Julia Burgess, Giuseppe Trusiano, Trevor Burgess, Roberta Bongiovanni, Christine Joly-Duhamel, Chadron M. Friesen
The content of this RSS Feed (c) The Royal Society of Chemistry




se

A novel series of phenolic temozolomide (TMZ) esters with 4 to 5-fold increased potency, compared to TMZ, against glioma cells irrespective of MGMT expression

RSC Adv., 2020, 10,17561-17570
DOI: 10.1039/D0RA02686G, Paper
Open Access
  This article is licensed under a Creative Commons Attribution 3.0 Unported Licence.
Leroy Shervington, Oliver Ingham, Amal Shervington
The standard of care treatment for patients diagnosed with glioblastoma multiforme (GBM) is temozolomide (TMZ).
The content of this RSS Feed (c) The Royal Society of Chemistry




se

A highly sensitive, selective and renewable carbon paste electrode based on a unique acyclic diamide ionophore for the potentiometric determination of lead ions in polluted water samples

RSC Adv., 2020, 10,17552-17560
DOI: 10.1039/D0RA01435D, Paper
Open Access
  This article is licensed under a Creative Commons Attribution 3.0 Unported Licence.
M. A. Zayed, Walaa H. Mahmoud, Ashraf A. Abbas, Aya E. Ali, Gehad G. Mohamed
Due to the toxicity of lead(II) to all living organisms destroying the central nervous system and leading to circulatory system and brain disorders, the development of effective and selective lead(II) ionophores for its detection is very important.
The content of this RSS Feed (c) The Royal Society of Chemistry




se

Selective cytotoxic effect against the MDA-MB-468 breast cancer cell line of the antibacterial palindromic peptide derived from bovine lactoferricin

RSC Adv., 2020, 10,17593-17601
DOI: 10.1039/D0RA02688C, Paper
Open Access
Andrea Barragán-Cárdenas, Maribel Urrea-Pelayo, Víctor Alfonso Niño-Ramírez, Adriana Umaña-Pérez, Jean Paul Vernot, Claudia Marcela Parra-Giraldo, Ricardo Fierro-Medina, Zuly Rivera-Monroy, Javier García-Castañeda
The cytotoxic effect against the breast cancer cell line MDA-MB-468 of the palindromic peptide LfcinB (21–25)Pal: 1RWQWRWQWR9 and its analogous peptides, obtained via alanine scanning, was evaluated.
The content of this RSS Feed (c) The Royal Society of Chemistry




se

Correction: Influence of co-cultures of Streptococcus thermophilus and probiotic lactobacilli on quality and antioxidant capacity parameters of lactose-free fermented dairy beverages containing Syzygium cumini (L.) Skeels pulp

RSC Adv., 2020, 10,16905-16905
DOI: 10.1039/D0RA90046J, Correction
Open Access
  This article is licensed under a Creative Commons Attribution 3.0 Unported Licence.
Sabrina Laís Alves Garcia, Gabriel Monteiro da Silva, Juliana Maria Svendsen Medeiros, Anna Paula Rocha de Queiroga, Blenda Brito de Queiroz, Daniely Rayane Bezerra de Farias, Joyceana Oliveira Correia, Eliane Rolim Florentino, Flávia Carolina Alonso Buriti
The content of this RSS Feed (c) The Royal Society of Chemistry




se

Computational study on the polymerization reaction of D-aminopeptidase for the synthesis of D-peptides

RSC Adv., 2020, 10,17582-17592
DOI: 10.1039/D0RA01138J, Paper
Open Access
  This article is licensed under a Creative Commons Attribution 3.0 Unported Licence.
Joan Gimenez-Dejoz, Kousuke Tsuchiya, Ayaka Tateishi, Yoko Motoda, Takanori Kigawa, Yasuhisa Asano, Keiji Numata
We studied the molecular mechanism of D-aminopeptidase for the synthesis of polypeptides incorporating D-amino acids.
The content of this RSS Feed (c) The Royal Society of Chemistry




se

A chitosan-based edible film with clove essential oil and nisin for improving the quality and shelf life of pork patties in cold storage

RSC Adv., 2020, 10,17777-17786
DOI: 10.1039/D0RA02986F, Paper
Open Access
Karthikeyan Venkatachalam, Somwang Lekjing
This study assessed chitosan (CS)-based edible films with clove essential oil (CO) and nisin (NI) singly or in combination, for improving quality and shelf life of pork patties stored in cold conditions.
The content of this RSS Feed (c) The Royal Society of Chemistry




se

Effect of Zn doping on phase transition and electronic structures of Heusler-type Pd2Cr-based alloys: from normal to all-d-metal Heusler

RSC Adv., 2020, 10,17829-17835
DOI: 10.1039/D0RA02951C, Paper
Open Access
  This article is licensed under a Creative Commons Attribution 3.0 Unported Licence.
Xiaotian Wang, Mengxin Wu, Tie Yang, Rabah Khenata
By first-principles calculations, for Heusler alloys Pd2CrZ (Z = Al, Ga, In, Tl, Si, Sn, P, As, Sb, Bi, Se, Te, Zn), the effect of Zn doping on their phase transition and electronic structure has been studied in this work.
The content of this RSS Feed (c) The Royal Society of Chemistry




se

Synthesis, characterization and corrosion inhibition behavior of 2-aminofluorene bis-Schiff bases in circulating cooling water

RSC Adv., 2020, 10,17816-17828
DOI: 10.1039/D0RA01903H, Paper
Open Access
Wenchang Wei, Zheng Liu, Chuxin Liang, Guo-Cheng Han, Jiaxing Han, Shufen Zhang
Two new bis-Schiff bases, namely 2-bromoisophthalaldehyde-2-aminofluorene (M1) and glutaraldehyde 2-aminofluorene (M2) were synthesized and were characterized, the potentiodynamic polarization curve confirmed that they were anode type inhibitors.
The content of this RSS Feed (c) The Royal Society of Chemistry




se

Research on the controllable degradation of N-methylamido and dialkylamino substituted at the 5th position of the benzene ring in chlorsulfuron in acidic soil

RSC Adv., 2020, 10,17870-17880
DOI: 10.1039/D0RA00811G, Paper
Open Access
Fan-Fei Meng, Lei Wu, Yu-Cheng Gu, Sha Zhou, Yong-Hong Li, Ming-Gui Chen, Shaa Zhou, Yang-Yang Zhao, Yi Ma, Zheng-Ming Li
These results will provide valuable information to discover tailored SU with controllable degradation properties to meet the needs of individual crops.
The content of this RSS Feed (c) The Royal Society of Chemistry




se

Lithium metal deposition/dissolution under uniaxial pressure with high-rigidity layered polyethylene separator

RSC Adv., 2020, 10,17805-17815
DOI: 10.1039/D0RA02788J, Paper
Open Access
  This article is licensed under a Creative Commons Attribution 3.0 Unported Licence.
Shogo Kanamori, Mitsuhiro Matsumoto, Sou Taminato, Daisuke Mori, Yasuo Takeda, Hoe Jin Hah, Takashi Takeuchi, Nobuyuki Imanishi
The use of a high rigidity separator and application of an appropriate amount of pressure are effective approaches to control lithium metal growth and improve its cycle performance.
The content of this RSS Feed (c) The Royal Society of Chemistry




se

Selenium modulates cadmium-induced ultrastructural and metabolic changes in cucumber seedlings

RSC Adv., 2020, 10,17892-17905
DOI: 10.1039/D0RA02866E, Paper
Open Access
Hongyan Sun, Xiaoyun Wang, Huimin Li, Jiahui Bi, Jia Yu, Xianjun Liu, Huanxin Zhou, Zhijiang Rong
Intensive insight into the potential mechanisms of Se-induced Cd tolerance in cucumber seedlings is essential for further improvement of vegetable crop cultivation and breeding to obtain high yields and quality in Cd-contaminated soil.
The content of this RSS Feed (c) The Royal Society of Chemistry




se

Synthesis of heteroatom-containing pyrrolidine derivatives based on Ti(O-iPr)4 and EtMgBr-catalyzed carbocyclization of allylpropargyl amines with Et2Zn

RSC Adv., 2020, 10,17881-17891
DOI: 10.1039/D0RA02677H, Paper
Open Access
  This article is licensed under a Creative Commons Attribution 3.0 Unported Licence.
Rita N. Kadikova, Ilfir R. Ramazanov, Azat M. Gabdullin, Oleg S. Mozgovoj, Usein M. Dzhemilev
The Ti(O-iPr)4 and EtMgBr-catalyzed regio and stereoselective carbocyclization of N-allyl-substituted 2-alkynylamines with Et2Zn, followed by deuterolysis or hydrolysis, affords the corresponding methylenepyrrolidine derivatives in high yields.
The content of this RSS Feed (c) The Royal Society of Chemistry




se

CSS pseudo-element Solar System

This is a remix of another author’s idea of using CSS to make a classic model of our solar system. Here, I’ve relied on CSS pseudo-elements and generated content to render scale models of the solar system from simple markup of the raw information.

There are three demos for this experiment, which is based on Alex Giron’s original Our Solar System in CSS3.

The basic demo uses only CSS and simple, semantic HTML to relatively faithfully reproduce Alex’s original result.

The advanced demo is a rough scale model of the Solar System. It uses the same HTML as the “basic demo” but makes extensive use of CSS pseudo-elements, generated content, and various bits of CSS3.

The advanced demo (keyboard support) is an attempt to provide keyboard support by introducing slight modifications to the HTML. I’ve commented out the animations in this version of the demo.

Why rework the original experiment?

I was curious to see if the same result could be achieved with simpler HTML, by relying on some newer CSS features.

I experimented a bit further with generated content, shadows, and the way the layout of the solar system is implemented. Doing this exposed me to some of the different ways modern browsers are implementing CSS3. I’ve described some of those differences and bugs below.

A scale model of the solar system

The main demo is a scale model of the solar system. It uses 3 different scales: one for the object diameters; one for the distance of the planets from the sun; and one for the orbital period of each planet.

Semantic HTML and Microdata

The HTML is a list where each list item contains a title and description. I’ve included some HTML Microdata to provide hooks for generated content.

<li id="earth" itemscope>
  <h2 itemprop="object">Earth
  <dl>
    <dt>Description</dt>
    <dd itemprop="description">Earth is an ocean planet. Our home world's abundance of water - and life - makes it unique in our solar system. Other planets, plus a few moons, have ice, atmospheres, seasons and even weather, but only on Earth does the whole complicated mix come together in a way that encourages life - and lots of it.</dd>
    <dt>Diameter</dt>
    <dd itemprop="diameter">12,755 <abbr title="kilometers">km</abbr></dd>
    <dt>Distance from sun</dt>
    <dd itemprop="distance">150×10<sup>6</sup> <abbr title="kilometers">km</abbr></dd>
    <dt>Orbital period</dt>
    <dd itemprop="orbit">365<abbr title="days">d</abbr></dd>
  </dl>
</li>

CSS pseudo-elements and generated content

Pseudo-elements are used to produce the planets, Saturn’s ring, the planet names, and to add the scale information.

Given that the scales only make sense when CSS is loaded it isn’t appropriate to have the scales described in the HTML. Both demos use the same HTML but only one of them is a rough scale model. Therefore, in the scale model demo I’ve used generated content to present the ratios and append extra information to the headings.

header h1:after {content:": A scale model";}
header h2:after {content:"Planet diameters 1px : 1,220 km / Distance from sun 1px : 7,125,000 km / Orbital period 1s : 4d";}

#earth dd[itemprop=diameter]:after {content:" (5px) / ";}
#earth dd[itemprop=distance]:after {content:" (22px) / ";}
#earth dd[itemprop=orbit]:after {content:" (91s)";}

Even more complex 3D presentations are likely to be possible using webkit-perspective and other 3D transforms.

Keyboard support

With a little modification it is possible to provide some form of keyboard support so that the additional information and highlighting can be viewed without using a mouse. Doing so requires adding block-level anchors (allowed in HTML5) and modifying some of the CSS selectors.

Modern browser CSS3 inconsistencies

This experiment only works adequately in modern browsers such as Safari 4+, Chrome 4+, Firefox 3.6+ and Opera 10.5+.

Even among the current crop of modern browsers, there are bugs and varying levels of support for different CSS properties and values. In particular, webkit’s box-shadow implementation has issues.

There are a few other unusual :hover bugs in Opera 10.5 (most obvious in the basic demo). It should also be noted that the :hover area remains square in all modern browsers even when you apply a border-radius to the element.

Border radius

There are also a few other peculiarities around percentage units for border radius. Of the modern browsers, a square object with a border-radius of 50% will only produce a circle in Safari 5, Chrome 5, and Firefox 3.6.

Safari 4 doesn’t appear to support percentage units for border radius at all (which is why the CSS in the demos explicitly sets a -webkit-border-radius value for each object). Safari 5 and Chrome 5 do support percentage units for this property. However, Chrome 5 has difficulty rendering a 1px wide border on a large circle. Most of the border simply isn’t rendered.

In Opera 10.5, if you set border-radius to 50% you don’t always get a circle, so I have had to redeclare the border-radius for each object in pixel units.

Opera 10.5’s incorrect rendering of border-radius:50%

It appears that this is one aspect of Opera’s non-prefixed border-radius implementation that is incorrect and in need of fixing.

Box shadow

Safari 4’s inferior box-shadow implementation means that inset shadows are not rendered on the planet bodies. In addition, the second box-shadow applied to Saturn (used to separate the planet from its ring) is completely missing in Safari 4 as it does not support a spread radius value.

Safari 5 and Chrome 5 are better but still problematic. The second box-shadow is not perfectly round as the box-shadow seems to use the pseudo-element’s computed border-radius. Furthermore, Chrome 5 on Windows does not properly support inset box-shadow meaning that the shadow ignores the border-radius declaration and appears as a protruding square.

Safari 5 and Chrome 5 make different mistakes in their rendering of this box-shadow

The use of box-shadow to separate Saturn from the ring isn’t strictly necessary. You can create the separated ring using a border but box-shadow cannot be applied in a way that casts it over a border. Another alternative would be to add a black border around the planet to give the illusion of space between itself and the ring, but all browsers display a few pixels of unwanted background colour all along the outer edge of the rounded border.

I wanted the ring to share the appearance of a shadow being cast on it. Opera 10.5 and Firefox 3.6 get it right. Both webkit browsers get it wrong.




se

An introduction to CSS pseudo-element hacks

CSS is a versatile style language that is most frequently used to control the look and formatting of an HTML document based on information in the document tree. But there are some common publishing effects – such as formatting the first line of a paragraph – that would not be possible if you were only able to style elements based on this information. Fortunately, CSS has pseudo-elements and pseudo-classes.

As their names imply, they are not part of the DOM in the way that ‘real’ HTML elements and classes are. Instead, they are CSS abstractions that provide additional, and otherwise inaccessible, information about the document.

This article will discuss the CSS pseudo-elements that are part of CSS 2.1 – :first-letter, :first-line, :before, and :after – and how the :before and :after pseudo-elements can be exploited to create some interesting effects, without compromising the simplicity of your HTML. But first, let’s look at each type of pseudo-element and how to use them in their basic form.

The :first-line and :first-letter pseudo-elements

The :first-line pseudo-element lets you apply styles to the first formatted line of a block container element (i.e., elements with their display property set to block, inline-block, list-item, table-caption, or table-cell). For example:

p:first-line { font-weight: bold; }

…will change the first line of every paragraph to bold. The :first-line pseudo-element can be treated as if it were an extra HTML inline element wrapping only the first line of text in the paragraph.

The :first-letter pseudo-element lets you apply styles to the first letter (and any preceding punctuation) of the first formatted line of a block container element. No other inline content (e.g. an image) can appear before the text. For example:

p:first-letter { float: left; font-size: 200%; }

…will produce a basic ‘drop cap’ effect. The first letter of every paragraph will be floated left, and twice as large as the other letters in the paragraph. The :first-letter pseudo-element can be treated as if it were an extra HTML inline element wrapping only the first letter of text in the paragraph.

The :first-line and :first-letter pseudo-elements can only be attached to block container elements, but the first formatted line can be contained within any block-level descendant (e.g., elements with their display property set to block or list-item) in the same flow (i.e., not floated or positioned). For example, the following HTML fragment and CSS:

<div><p>An example of the first line of text being within a descendant element</p></div>

div:first-line { font-weight: bold; }

…would still result in a bold first line of text, because the paragraph’s text is the first formatted line of the div.

The :before and :after pseudo-elements

The :before and :after pseudo-elements are used to insert generated content before or after an element’s content. They can be treated as if they were extra HTML inline elements inserted just before and after the content of their associated element.

Generated content is specified using the content property which, in CSS 2.1, can only be used in conjunction with the :before and :after pseudo-elements. Furthermore, you must declare the content property in order to generate the :before and :after pseudo-elements.

The content property can take string, url(), attr(), counter() and counters() values. The url() value is used to insert an image. The attr() function returns as a string the value of the specified attribute for the associated element. The counter() and counters() functions can be used to display the value of any CSS counters.

For example, the following HTML fragment and CSS:

<a href="http://wikipedia.org">Wikipedia</a>

a:after { content: " (" attr(href) ")"; }

…would display the value of the href attribute after a link’s content, resulting in the following anchor text for the example above: Wikipedia (http://wikipedia.org). This can be a helpful way to display the destination of specific links in printed web documents.

Keep in mind that CSS is meant for adding presentation and not content. Therefore, the content property should be used with caution.

It’s also worth noting that the :first-letter and :first-line pseudo-elements apply to the first letter and first line of an element including any generated content inserted using the :before and :after pseudo-elements.

Browser support for pseudo-elements

The :first-letter and :first-line pseudo-elements were introduced in CSS1 and there is wide basic support for them. However, IE 6 and IE 7 have particularly buggy implementations; even modern browsers are not entirely consistent in the way that they handle the :first-line and :first-letter pseudo-elements (example bugs).

The :before and :after pseudo-elements were introduced in the CSS 2.1 specification and are fully implemented in Firefox 3.5+, IE 8+, Safari 3+, Google Chrome, and Opera. Modern versions of Firefox even support CSS transitions and animations applied to pseudo-elements. However, legacy browsers like IE 6 and IE 7 do not support the :before and :after pseudo-elements at all.

For more detailed information on pseudo-element browser support, browser bugs, and workarounds, have a look at Sitepoint’s reference and this article on IE 6/7 issues.

In most cases, the :before and :after pseudo-elements can be used as part of a ‘progressive enhancement’ approach to design and development, because IE 6 and IE 7 will simply ignore them altogether. Alternatively, Modernizr now includes a robust feature test for generated content, providing one way to specify fallbacks or enhancements depending on browser support. The important thing is to remember to check what happens in browsers where support is missing.

Alternative ways to use pseudo-elements

Let’s take a look at how the :before and :after pseudo-elements can be used as the basis for some interesting effects. Most of the time, this involves generating empty :before and :after pseudo-elements by declaring an empty string as the value of the content property. They can then be manipulated as if they were empty inline HTML elements, keeping your HTML clean and giving you full control of certain effects from within CSS style sheets.

Simple visual enhancements, like speech bubbles and folded corners, can even be created without the need for images. This relies on the fact that you can create simple shapes using CSS.

Several types of ‘CSS polygons’ can be created as a result of browsers rendering borders at an angle when they meet. This can be exploited to create triangles. For example, the following HTML fragment and CSS:

<div class="triangle"></div>

.triangle {
  width: 0;
  height: 0;
  border-width: 20px;
  border-style: solid;
  border-color: red transparent transparent;
}

…will create a downward pointing, red triangle. By varying the width, height, border-width, border-style, and border-color values you can produce different shapes and control their orientation and colour. For more information, be sure to read Jon Rogan’s summary of the technique.

The more advanced pseudo-element hacks use the extra background canvas afforded by each :before and :after pseudo-element. This can help you crop background images, control the opacity of background images, and ‘fake’ multiple backgrounds and borders in browsers without support for CSS3 multiple backgrounds (e.g., IE 8). Taken to ludicrous extremes, you can even build a whole CSS icon set. To start with, let’s look at some simple effects that can be created without images or presentational HTML.

Creating CSS speech bubbles

In this example, a quote is styled to look like a speech bubble, using CSS. This is done by creating a triangle using a pseudo-element, and then absolutely positioning it in the desired place. By adding position:relative to the CSS styles for the HTML element, you can absolutely position the :after pseudo-element relative to its associated element.

<div class="quote">[Quoted text]</div>

.quote {
  position: relative;
  width: 300px;
  padding: 15px 25px 20px;
  margin: 20px auto;
  font: italic 26px/1.4 Georgia, serif;
  color: #fff;
  background: #245991;
}

.quote:after {
  content: "";
  position: absolute;
  top: 100%;
  right: 25px;
  border-width: 30px 30px 0 0;
  border-style: solid;
  border-color: #245991 transparent;
}

There’s nothing stopping you from adding some CSS3 to further enhance the effect for capable browsers. This could be adding rounded corners to the box or applying a skew transform to the triangle itself. Fiddle with the code in this example.

Creating CSS ‘ribbons’

Using the same principle, you can create a CSS ribbon effect without images or extra HTML. This time the effect uses 2 pseudo-element triangles. The HTML fragment is still very simple.

<div class="container">
    <h1>Simple CSS ribbon</h1>
    <p>[other content]</p>
</div>

You then need to use negative margins to pull the h1 outwards so that it extends over the padding and beyond the boundaries of the container div. The HTML fragment above can be styled using the following CSS:

.container {
  width: 400px;
  padding: 20px;
  margin: 20px auto;
  background: #fff;
}

.container h1 {
  position: relative;
  padding: 10px 30px;
  margin: 0 -30px 20px;
  font-size: 20px;
  line-height: 24px;
  font-weight: bold;
  color: #fff;
  background: #87A800;
}

From here, you only need to add the pseudo-element triangles to create the ‘wrapping’ appearance associated with ribbons. The :before and :after pseudo-elements share many styles, so you can simplify the code by only overriding the styles that differ between the two. In this case, the triangle created with the :after pseudo-element must appear on the opposite side of the heading, and will be a mirror image of the other triangle. So you need to override the shared styles that control its position and orientation.

.container h1:before,
.container h1:after {
  content: "";
  position: absolute;
  top: 100%;
  left: 0;
  border-width: 0 10px 10px 0;
  border-style: solid;
  border-color: transparent #647D01;
}

/* override shared styles */
.container h1:after {
  left: auto;
  right: 0;
  border-width: 0 0 10px 10px;
}

Fiddle with the code in this example.

Creating CSS folded corners

The final example of this form of pseudo-element hack creates a simple CSS folded-corner effect. A pseudo-element’s border properties are set to produce two differently-coloured touching triangles. One triangle is a slightly darker or lighter shade of the box’s background colour. The other triangle matches the background colour of the box’s parent (e.g. white). The pseudo-element is then positioned in the top right corner of its associated element to complete the effect.

.note {
  position: relative;
  padding: 20px;
  margin: 2em 0;
  color: #fff;
  background: #97C02F;
}

.note:before {
  content: "";
  position: absolute;
  top: 0;
  right: 0;
  border-width: 0 16px 16px 0;
  border-style: solid;
  border-color: #658E15 #fff;
}

Varying the size of the borders will vary the size and angle of the folded-corner. Fiddle with the code in this example.

Pseudo background-crop

Although creating polygons with pseudo-elements can produce some popular effects without images, the possibilities are inherently limited. But this is only one type of :before and :after pseudo-element hack. Treated as extra background canvases, they can be used to fill some gaps in existing browser support for CSS features.

One of those features is the cropping of background images. In the future, it’s likely that you’ll be able to crop background images using fragment identifiers, as is proposed in the CSS Image Values Module Level 3 draft. But at the moment no browsers support the use of fragment identifiers with bitmap images. Until they do, you can make use of this CSS 2.1 hack to emulate background image cropping in modern browsers.

The principle behind a ‘pseudo background-crop‘ is to apply a background-image to a pseudo-element rather than directly to an element in the HTML document. One of the applications of this technique is to crop icons that are part of a sprite.

For example, a web app might allow users to ‘save’, ‘edit’, or ‘delete’ an item. The HTML involved might look something like this:

<ul class="actions">
  <li class="save"><a href="#">Save</a></li>
  <li class="edit"><a href="#">Edit</a></li>
  <li class="delete"><a href="#">Delete</a></li>
</ul>

To enhance the appearance of these ‘action’ links, it is common to see icons sitting alongside the anchor text. For argument’s sake, let’s say that the relevant icons are part of a sprite that is organised using a 16px × 16px grid.

The :before pseudo-element – with dimensions that match the sprite’s grid unit – can be used to crop and display each icon. The sprite is referenced as a background image and the background-position property is used to control the precise positioning of each icon to be shown.

.actions a:before {
  content: "";
  float: left;
  width: 16px;
  height: 16px;
  margin: 0 5px 0 0;
  background: url(sprite.png);
}

.save a:before { background-position: 0 0; }
.edit a:before { background-position: -16px 0; }
.delete a:before { background-position: -32px 0; }

Using pseudo-elements like this helps to avoid the need to either add liberal amounts of white space to sprites or use empty HTML elements to do the cropping. Fiddle with the code in this example.

Pseudo background-position

The CSS 2.1 specification limits the values of background-position to horizontal and vertical offsets from the top-left corner of an element. The CSS Backgrounds and Borders Module Level 3 working draft includes an improvement to the background-position property to allow offsets to be set from any side. However, Opera 11+ is currently the only browser to have implemented it.

But by using pseudo-elements, it’s possible to emulate positioning a background image from any side in any browser with adequate CSS 2.1 support –’pseudo background-position‘.

Once a pseudo-element is created, it must be absolutely positioned in front of the associated element’s background but behind its content, so as not to prevent users from being able to select text or click on links. This is done by setting a positive z-index on the element and a negative z-index on the pseudo-element.

#content {
  position: relative;
  z-index: 1;
}

#content:before {
  content: "";
  position: absolute;
  z-index: -1;
}

Now the pseudo-element can be sized and positioned to sit over any area within (or beyond) the element itself, without affecting its content. This is achieved by using any combination of values for the top, right, bottom, and left positional offsets, as well as the width, and height properties. It is the key to their flexibility.

In this example, a 200px × 300px background image is applied to the pseudo-element, which is also given dimensions that match those of the image. Since the pseudo-element is absolutely positioned, it can be offset from the bottom and right of the associated HTML element.

#content {
  position: relative;
  z-index: 1;
}

#content:before {
  content: "";
  position: absolute;
  z-index: -1;
  bottom: 10px;
  right: 10px;
  width: 200px;
  height: 300px;
  background: url(image.jpg);
}

Many other hacks and effects are possible using the :before and :after pseudo-elements, especially when combined with CSS3. Hopefully this introduction to pseudo-elements, and how they can be exploited, will have inspired you to experiment with them in your work.

The future of pseudo-elements

The way that pseudo-elements are used will continue to change as CSS does. Some new applications will emerge, and existing ones will fade away as browser implementation of ‘CSS3 modules’ continues to improve.

Generated content and pseudo-elements themselves are likely to undergo changes too. The CSS3 Generated and Replaced Content Module introduced a two-colon format for pseudo-elements (i.e., ::before) to help distinguish between pseudo-classes and pseudo-elements. But for compatibility with previous levels of CSS, pseudo-elements do not require two colons. Most modern browsers support both formats, but it is not supported by IE 8 and the single-colon format ensures greater backwards compatibility.

The proposed extensions to pseudo-elements included the addition of nested pseudo-elements (::before::before), multiple pseudo-elements (::after(2)), wrapping pseudo-elements (::outside), and the ability to insert pseudo-elements into later parts of the document (::alternate). However, the CSS3 Generated and Replaced Content Module is undergoing significant changes.

This article was originally published in .net magazine in April 2011




se

About HTML semantics and front-end architecture

A collection of thoughts, experiences, ideas that I like, and ideas that I have been experimenting with over the last year. It covers HTML semantics, components and approaches to front-end architecture, class naming patterns, and HTTP compression.

About semantics

Semantics is the study of the relationships between signs and symbols and what they represent. In linguistics, this is primarily the study of the meaning of signs (such as words, phrases, or sounds) in language. In the context of front-end web development, semantics are largely concerned with the agreed meaning of HTML elements, attributes, and attribute values (including extensions like Microdata). These agreed semantics, which are usually formalised in specifications, can be used to help programmes (and subsequently humans) better understand aspects of the information on a website. However, even after formalisation, the semantics of elements, attributes, and attribute values are subject to adaptation and co-option by developers. This can lead to subsequent modifications of the formally agreed semantics (and is an HTML design principle).

Distinguishing between different types of HTML semantics

The principle of writing “semantic HTML” is one of the foundations of modern, professional front-end development. Most semantics are related to aspects of the nature of the existing or expected content (e.g. h1 element, lang attribute, email value of the type attribute, Microdata).

However, not all semantics need to be content-derived. Class names cannot be “unsemantic”. Whatever names are being used: they have meaning, they have purpose. Class name semantics can be different to those of HTML elements. We can leverage the agreed “global” semantics of HTML elements, certain HTML attributes, Microdata, etc., without confusing their purpose with those of the “local” website/application-specific semantics that are usually contained in the values of attributes like the class attribute.

Despite the HTML5 specification section on classes repeating the assumed “best practice” that…

…authors are encouraged to use [class attribute] values that describe the nature of the content, rather than values that describe the desired presentation of the content.

…there is no inherent reason to do this. In fact, it’s often a hindrance when working on large websites or applications.

  • Content-layer semantics are already served by HTML elements and other attributes.
  • Class names impart little or no useful semantic information to machines or human visitors unless it is part of a small set of agreed upon (and machine readable) names – Microformats.
  • The primary purpose of a class name is to be a hook for CSS and JavaScript. If you don’t need to add presentation and behaviour to your web documents, then you probably don’t need classes in your HTML.
  • Class names should communicate useful information to developers. It’s helpful to understand what a specific class name is going to do when you read a DOM snippet, especially in multi-developer teams where front-enders won’t be the only people working with HTML components.

Take this very simple example:

<div class="news">
    <h2>News</h2>
    [news content]
</div>

The class name news doesn’t tell you anything that is not already obvious from the content. It gives you no information about the architectural structure of the component, and it cannot be used with content that isn’t “news”. Tying your class name semantics tightly to the nature of the content has already reduced the ability of your architecture to scale or be easily put to use by other developers.

Content-independent class names

An alternative is to derive class name semantics from repeating structural and functional patterns in a design. The most reusable components are those with class names that are independent of the content.

We shouldn’t be afraid of making the connections between layers clear and explicit rather than having class names rigidly reflect specific content. Doing this doesn’t make classes “unsemantic”, it just means that their semantics are not derived from the content. We shouldn’t be afraid to include additional HTML elements if they help create more robust, flexible, and reusable components. Doing so does not make the HTML “unsemantic”, it just means that you use elements beyond the bare minimum needed to markup the content.

Front-end architecture

The aim of a component/template/object-oriented architecture is to be able to develop a limited number of reusable components that can contain a range of different content types. The important thing for class name semantics in non-trivial applications is that they be driven by pragmatism and best serve their primary purpose – providing meaningful, flexible, and reusable presentational/behavioural hooks for developers to use.

Reusable and combinable components

Scalable HTML/CSS must, by and large, rely on classes within the HTML to allow for the creation of reusable components. A flexible and reusable component is one which neither relies on existing within a certain part of the DOM tree, nor requires the use of specific element types. It should be able to adapt to different containers and be easily themed. If necessary, extra HTML elements (beyond those needed just to markup the content) and can be used to make the component more robust. A good example is what Nicole Sullivan calls the media object.

Components that can be easily combined benefit from the avoidance of type selectors in favour of classes. The following example prevents the easy combination of the btn component with the uilist component. The problems are that the specificity of .btn is less than that of .uilist a (which will override any shared properties), and the uilist component requires anchors as child nodes.

.btn { /* styles */ }
.uilist { /* styles */ }
.uilist a { /* styles */ }
<nav class="uilist">
    <a href="#">Home</a>
    <a href="#">About</a>
    <a class="btn" href="#">Login</a>
</nav>

An approach that improves the ease with which you can combine other components with uilist is to use classes to style the child DOM elements. Although this helps to reduce the specificity of the rule, the main benefit is that it gives you the option to apply the structural styles to any type of child node.

.btn { /* styles */ }
.uilist { /* styles */ }
.uilist-item { /* styles */ }
<nav class="uilist">
    <a class="uilist-item" href="#">Home</a>
    <a class="uilist-item" href="#">About</a>
    <span class="uilist-item">
        <a class="btn" href="#">Login</a>
    </span>
</nav>

JavaScript-specific classes

Using some form of JavaScript-specific classes can help to reduce the risk that thematic or structural changes to components will break any JavaScript that is also applied. An approach that I’ve found helpful is to use certain classes only for JavaScript hooks – js-* – and not to hang any presentation off them.

<a href="/login" class="btn btn-primary js-login"></a>

This way, you can reduce the chance that changing the structure or theme of components will inadvertently affect any required JavaScript behaviour and complex functionality.

Component modifiers

Components often have variants with slightly different presentations from the base component, e.g., a different coloured background or border. There are two mains patterns used to create these component variants. I’m going to call them the “single-class” and “multi-class” patterns.

The “single-class” pattern

.btn, .btn-primary { /* button template styles */ }
.btn-primary { /* styles specific to save button */ }

<button class="btn">Default</button>
<button class="btn-primary">Login</button>

The “multi-class” pattern

.btn { /* button template styles */ }
.btn-primary { /* styles specific to primary button */ }

<button class="btn">Default</button>
<button class="btn btn-primary">Login</button>

If you use a pre-processor, you might use Sass’s @extend functionality to reduce some of the maintenance work involved in using the “single-class” pattern. However, even with the help of a pre-processor, my preference is to use the “multi-class” pattern and add modifier classes in the HTML.

I’ve found it to be a more scalable pattern. For example, take the base btn component and add a further 5 types of button and 3 additional sizes. Using a “multi-class” pattern you end up with 9 classes that can be mixed-and-matched. Using a “single-class” pattern you end up with 24 classes.

It is also easier to make contextual tweaks to a component, if absolutely necessary. You might want to make small adjustments to any btn that appears within another component.

/* "multi-class" adjustment */
.thing .btn { /* adjustments */ }

/* "single-class" adjustment */
.thing .btn,
.thing .btn-primary,
.thing .btn-danger,
.thing .btn-etc { /* adjustments */ }

A “multi-class” pattern means you only need a single intra-component selector to target any type of btn-styled element within the component. A “single-class” pattern would mean that you may have to account for any possible button type, and adjust the selector whenever a new button variant is created.

Structured class names

When creating components – and “themes” that build upon them – some classes are used as component boundaries, some are used as component modifiers, and others are used to associate a collection of DOM nodes into a larger abstract presentational component.

It’s hard to deduce the relationship between btn (component), btn-primary (modifier), btn-group (component), and btn-group-item (component sub-object) because the names don’t clearly surface the purpose of the class. There is no consistent pattern.

In early 2011, I started experimenting with naming patterns that help me to more quickly understand the presentational relationship between nodes in a DOM snippet, rather than trying to piece together the site’s architecture by switching back-and-forth between HTML, CSS, and JS files. The notation in the gist is primarily influenced by the BEM system‘s approach to naming, but adapted into a form that I found easier to scan.

Since I first wrote this post, several other teams and frameworks have adopted this approach. MontageJS modified the notation into a different style, which I prefer and currently use in the SUIT framework:

/* Utility */
.u-utilityName {}

/* Component */
.ComponentName {}

/* Component modifier */
.ComponentName--modifierName {}

/* Component descendant */
.ComponentName-descendant {}

/* Component descendant modifier */
.ComponentName-descendant--modifierName {}

/* Component state (scoped to component) */
.ComponentName.is-stateOfComponent {}

This is merely a naming pattern that I’m finding helpful at the moment. It could take any form. But the benefit lies in removing the ambiguity of class names that rely only on (single) hyphens, or underscores, or camel case.

A note on raw file size and HTTP compression

Related to any discussion about modular/scalable CSS is a concern about file size and “bloat”. Nicole Sullivan’s talks often mention the file size savings (as well as maintenance improvements) that companies like Facebook experienced when adopting this kind of approach. Further to that, I thought I’d share my anecdotes about the effects of HTTP compression on pre-processor output and the extensive use of HTML classes.

When Twitter Bootstrap first came out, I rewrote the compiled CSS to better reflect how I would author it by hand and to compare the file sizes. After minifying both files, the hand-crafted CSS was about 10% smaller than the pre-processor output. But when both files were also gzipped, the pre-processor output was about 5% smaller than the hand-crafted CSS.

This highlights how important it is to compare the size of files after HTTP compression, because minified file sizes do not tell the whole story. It suggests that experienced CSS developers using pre-processors don’t need to be overly concerned about a certain degree of repetition in the compiled CSS because it can lend itself well to smaller file sizes after HTTP compression. The benefits of more maintainable “CSS” code via pre-processors should trump concerns about the aesthetics or size of the raw and minified output CSS.

In another experiment, I removed every class attribute from a 60KB HTML file pulled from a live site (already made up of many reusable components). Doing this reduced the file size to 25KB. When the original and stripped files were gzipped, their sizes were 7.6KB and 6KB respectively – a difference of 1.6KB. The actual file size consequences of liberal class use are rarely going to be worth stressing over.

How I learned to stop worrying…

The experience of many skilled developers, over many years, has led to a shift in how large-scale website and applications are developed. Despite this, for individuals weaned on an ideology where “semantic HTML” means using content-derived class names (and even then, only as a last resort), it usually requires you to work on a large application before you can become acutely aware of the impractical nature of that approach. You have to be prepared to disgard old ideas, look at alternatives, and even revisit ways that you may have previously dismissed.

Once you start writing non-trivial websites and applications that you and others must not only maintain but actively iterate upon, you quickly realise that despite your best efforts, your code starts to get harder and harder to maintain. It’s well worth taking the time to explore the work of some people who have proposed their own approaches to tackling these problems: Nicole’s blog and Object Oriented CSS project, Jonathan Snook’s Scalable Modular Architecture CSS, and the Block Element Modifier method that Yandex have developed.

When you choose to author HTML and CSS in a way that seeks to reduce the amount of time you spend writing and editing CSS, it involves accepting that you must instead spend more time changing HTML classes on elements if you want to change their styles. This turns out to be fairly practical, both for front-end and back-end developers – anyone can rearrange pre-built “lego blocks”; it turns out that no one can perform CSS-alchemy.