nes

An ultrasensitive electrochemiluminescence aptasensor for the detection of diethylstilbestrol based on the enhancing mechanism of the metal–organic framework NH2-MIL-125(Ti) in a 3,4,9,10-perylenetetracarboxylic acid/K2S2O8 system

Analyst, 2020, 145,3306-3312
DOI: 10.1039/D0AN00212G, Paper
Jingxian Li, Xueling Shan, Ding Jiang, Zhidong Chen
A novel electrochemiluminescence (ECL) aptasensor based on PTCA/NH2-MIL-125 for the determination of diethylstilbestrol.
The content of this RSS Feed (c) The Royal Society of Chemistry




nes

Trace manganese detection via differential pulse cathodic stripping voltammetry using disposable electrodes: additively manufactured nanographite electrochemical sensing platforms

Analyst, 2020, 145,3424-3430
DOI: 10.1039/D0AN00018C, Paper
Open Access
Diego P. Rocha, Christopher W. Foster, Rodrigo A. A. Munoz, Gary A. Buller, Edmund M. Keefe, Craig E. Banks
Additive manufacturing is a promising technology for the rapid and economical fabrication of portable electroanalytical devices.
The content of this RSS Feed (c) The Royal Society of Chemistry




nes

Synthesis of a manganese dioxide nanorod-anchored graphene oxide composite for highly sensitive electrochemical sensing of dopamine

Analyst, 2020, 145,3283-3288
DOI: 10.1039/D0AN00348D, Paper
Juan Li, Huifang Shen, Suhua Yu, Geshan Zhang, Chuanli Ren, Xiaoya Hu, Zhanjun Yang
A novel manganese dioxide nanorod-anchored graphene oxide (MnO2 NRs/GO) composite was synthesized by a simple hydrothermal method for the development of a highly sensitive electrochemical sensor for dopamine.
The content of this RSS Feed (c) The Royal Society of Chemistry




nes

A paper-supported sandwich immunosensor based on upconversion luminescence resonance energy transfer for the visual and quantitative determination of a cancer biomarker in human serum

Analyst, 2020, Accepted Manuscript
DOI: 10.1039/C9AN02307K, Paper
Mengyuan He, Ning Shang, Lin Shen, Zhi-hong Liu
In this paper, a paper-supported analytical device based on a sandwich immunoreaction and luminescence resonance energy transfer (LRET) was reported for the visual and quantitative determination of a cancer biomarker,...
The content of this RSS Feed (c) The Royal Society of Chemistry




nes

[ASAP] Efficient and Reproducible Multigene Expression after Single-Step Transfection Using Improved BAC Transgenesis and Engineering Toolkit

ACS Synthetic Biology
DOI: 10.1021/acssynbio.9b00457




nes

[ASAP] SCRaMbLEing of a Synthetic Yeast Chromosome with Clustered Essential Genes Reveals Synthetic Lethal Interactions

ACS Synthetic Biology
DOI: 10.1021/acssynbio.0c00059




nes

[ASAP] One-Day Construction of Multiplex Arrays to Harness Natural CRISPR-Cas Systems

ACS Synthetic Biology
DOI: 10.1021/acssynbio.9b00489




nes

[ASAP] Design, Synthesis, and Mechanism Study of Benzenesulfonamide-Containing Phenylalanine Derivatives as Novel HIV-1 Capsid Inhibitors with Improved Antiviral Activities

Journal of Medicinal Chemistry
DOI: 10.1021/acs.jmedchem.0c00015




nes

[ASAP] Progress in the Field of Aldehyde Dehydrogenase Inhibitors: Novel Imidazo[1,2-<italic toggle="yes">a</italic>]pyridines against the 1A Family

ACS Medicinal Chemistry Letters
DOI: 10.1021/acsmedchemlett.9b00686




nes

[ASAP] Selective Covalent Targeting of Mutated EGFR(T790M) with Chlorofluoroacetamide-Pyrimidines

ACS Medicinal Chemistry Letters
DOI: 10.1021/acsmedchemlett.9b00574




nes

[ASAP] Design and Synthesis of Tetrazole- and Pyridine-Containing Itraconazole Analogs as Potent Angiogenesis Inhibitors

ACS Medicinal Chemistry Letters
DOI: 10.1021/acsmedchemlett.9b00438




nes

[ASAP] Potential Cancer Treatment by Agonists of the Stimulator of Interferon Genes

ACS Medicinal Chemistry Letters
DOI: 10.1021/acsmedchemlett.0c00117




nes

[ASAP] Can Drug Repositioning Work as a Systematical Business Model?

ACS Medicinal Chemistry Letters
DOI: 10.1021/acsmedchemlett.0c00122




nes

[ASAP] Substituted Azabicyclo[2.2.1]heptanes as Selective Orexin-1 Antagonists: Discovery of JNJ-54717793

ACS Medicinal Chemistry Letters
DOI: 10.1021/acsmedchemlett.0c00085




nes

Nesting Components

Using CSS components is somewhat straightforward. We add the markup and give it the component’s class name and all is good. Where it gets trickier is when we try to nest components. And when they need to be tweaked based on the context. Where should the styles be defined? It’s a question I’ve been asking myself a few times and what this article is trying to explore.

Just to clarify before we start, with “CSS components”, I mean the small building blocks that get used to assemble a website or app. Like buttons, inputs, navs, headers etc. Some also call them modules or patterns. Also I’m using the SUIT naming convention in the examples below, but any other convention would be fine as well. And just a heads, there isn’t some awesome solution at the end that solves all the problems. It’s just me whining most of the time.

Ok, best is to go straight into it and look at an example. Let’s say we have a Header component where we would like to add a Button component inside.

<header class=“Header”>
  <button class=“Button”>Button</button>
</header>

Now because the Button is inside the Header, we want to make the Button a bit smaller than it would be on its own.

Here a few approaches how to do that:

Option 1 - Descendant selector

Maybe the most common way is to use a descendant selector to change the font-size whenever a Button is inside a Header.

.Header .Button {
  font-size: .75em;
}

This works great but the question is, where should this rule be added? We probably split our components into separate files, so is it in header.scss or in button.scss? In other words, should the Header know about what other components might get nested or should the Button know in what environment it will get placed?

But wait, the point of creating components is to separate them, make them modular. Each component should be kept isolated and shouldn’t know about other components. So we can make changes, rename or remove them without having to check if they might get used somewhere else.

Option 2 - Variations

Another way is to create variations. We add a .Button--small class that we can use whenever we would like the button to be smaller without having to worry about ancestors.

.Button--small {
  font-size: .75em;
}
<header class=“Header”>
  <button class=“Button Button--small>Button</button>
</header>

This works great too, but could get out of hand quickly. What do you do if at some point you want the font-size to be .9em? Create yet another variation? Button--justALittleSmaller. As the project keeps growing, the number of variations will too. We will start to loose sight where they actually get used and we’re not sure anymore if we can change a variation or if it will have side effects in some other place. We could create “contextual” variations like Button--header or Button--footer, but then we’re back at the beginning and could just as well use “descendant selectors”.

Same goes for using states. .Button.is-small should only be used if there is a change in state and not to fit a certain context.

Option 3 - Adopted Child

I can’t remember where I read about this approach but somehow it stuck with me. I also forgot how it was called. So for now I’ll just call it “Adopted Child”.

Let’s switch it around and look at it from the Header’s perspective. What would we do if we wouldn’t know what the components are called that might get nested? But we know that we want to make them a bit smaller. Well, we probably would create a generic .Header-item class and use it like this:

.Header-item {
  font-size: .75em;
}
<header class=“Header”>
  <div class=“Header-item”></div>
</header>

Ok, that gets us a bit closer. Now, it’s probably strange saying it like that when talking about CSS, but what would we do if we don’t want to create an own child, but still have one. Right, we could adopt one. In our example we adopt a Button component as our own child. We didn’t create it, but now we can tweak.. erm.. I mean “raise” it like it’s our own:

// born in button.scss
.Button {
  font-size: 1em;
}

// raised in header.css
.Header .Header-item {
  font-size: .75em;
}
<header class=“Header”>
  <button class=“Header-item Button>Button</button>
</header>

It is a bit uncommon that the same HTML element shares classes from two different components. And it’s not without any risks. More about them later. But I really like this approach because it keeps the components independent without having to know about each other.

Another nice thing is that if we want to add other components to the Header that also need the same adjustments, we can reuse the same Header-item class, like for example on a text Input.

<header class=“Header”>
	<input class=“Header-item Input>
  <button class=“Header-item Button>Button</button>
</header>

Ok, about those risks. Well, depending on what properties we wanna change, it might not always be ideal. For example, because the Button already had font-size defined, we had to increase specificity by using .Header .Header-item. But that would also override variations like .Button--small. That might be how we want it, but there are also situations where we’d like the variation to always be “stronger”. An example would be when changing colors. When the color of Buttons should be different inside a Header, but not when its a variation, like .Button—primary. Yeah, we could take a look inside button.scss or our style-guide, but remember our goal.. we actually don’t want to make decisions by looking how other components are made.

So, as a general rule, don’t use “adopted children” for any properties that are theme related and only where you can be sure that you want to override them all the time. Like for layout/size related properties or adjusting the position.

More options?

There are some more ways to do contextual styling that came to mind. I’ll just mention them briefly for completeness, but think the 3 above are better suited.

Option 4 - We could use a preprocessor to extend an existing component. In our example it would be a clone of the Button with some tweaks added and used as a new child component .Header-button. Now we only rely that the Button exists in the source, but don’t have to worry about other contexts. Downside is inflating our CSS output. As well as having to remember lots of new child component classes.

Option 5 - We could create a utility class like .u-small. It’s similar to variations, but not scoped to a single component and could be used for other components as well. And for that reason it becomes very risky to ever change later.

Option 6 - And of course, we could use inline styles. But I would leave that to JavaScript only.


So after all that, which is best? I’m afraid there isn’t a clear winner. It would be nice to keep it consistent with a single approach throughout the entire project, but I guess we just have to decide on a per case basis:

  1. Descendant selectors if we can expect that components don’t change much. Like when using a UI Kit or library.
  2. Variations if it makes sense that a component has different versions that get reused anyways, and not just for a specific context.
  3. Adopted Child for layout, sizing, positioning or where we are sure to always want to override a property. Also for changing multiple child components at once.
  4. Extending when we truly want the components to be separated and don’t mind inflating the CSS output.
  5. Utilities for very specific things, that once the class is defined, it will never change, like clearing floats.
  6. Inline styles if it needs to be dynamically added with JavaScript.

As said at the beginning, I haven’t found a “fits all” solution and maybe the conclusion is: Try to keep contextual styling to a minimum.

Updates

The “Adopted Child” approach is called “Mixes” in BEM. Here some more infos.


SUIT also recommends using “Adopted Child/Mixes”. But also another option:

Option 7 - Adding a wrapper element. It’s the <div class="Excerpt-wrapButton"> in that example. I think it works great in most cases. But for example when using Flexbox, because it has this parent/child relationship, adding an extra wrapper in between would break it. And then you might still need to set the width of the wrapped component to 100% or so. Anyways, this is a great addition. Thanks Pablo in the comments.


Option 8 - Single Purpose Classes. It’s where every class has only a single property. It’s somewhere between utilities (Option 5) and inline styles (Option 6). Atomic CSS and Tachyons use this approach. I haven’t used them on a real project, but just from looking at it, the concerns are similar to the ones from utilities. If you want to change the value in a SP class, it seems unpredictable. Because in another place (where that same class is used), you might want to keep the current value. So you would have to first check if the change has any unwanted effects somewhere else.




nes

For your pleasure: Johannes Brus, photoworks and sculptures / with an essay by Clément Chéroux

Rotch Library - N6888.B745 A4 2018




nes

Touch me / Johannes Frandsen ; text, Mattias Lundblad

Rotch Library - TR650.F73 2018




nes

Sunniness in painting: from Edward Hopper to David Hockney / Nicola Vitale

Rotch Library - ND1140.V58 2019




nes

Padiglione Indonesiano all Biennale di Venezia 2019 / team artistico, Syagini Ratna Wulan, Handiwirman Saputra, artisti ; Asmudjo J. Irianto, Yacobus Ari Respati, curatore

Rotch Library - N6488.I8 V433 2019 I5




nes

Khnum, across times witness: Egyptian pavilion

Rotch Library - N6488.I8 V433 2019 E3




nes

Animated encounters: transnational movements of Chinese animation, 1940s-1970s / Daisy Yan Du

Rotch Library - NC1766.C6 D8 2019




nes

Hot, cold, heavy, light: 100 art writings, 1988-2018 / Peter Schjeldahl ; edited with an introduction by Jarrett Earnest

Rotch Library - N7445.2.S35 2019




nes

Shirin Neshat: I will greet the sun again / organized by Ed Schad ; Shirin Neshat in conversation with Glenn Lowry ; with essays by Godfrey Cheshire, Layla S. Diba, Farzaneh Milani, and Ed Schad

Rotch Library - TR647.N4454 2019




nes

Ästhetik der Objektivität: Genese und Funktion eines wissenschaftlichen und künstlerischen Stils im 19. Jahrhundert / Anja Zimmermann

Online Resource




nes

Casa Wabi / Tadao Ando, Gloria Cabral and Solano Benítez, Damián Comas for Jorge Ambrosi and Gabriela Etchegaray, Dakin Hart, Alberto Kalach, Kengo Kuma, Alfonso Quiñones, Alberto Ríos de la Rosa, Álvaro Siza, Bosco Sodi, Carla S

Rotch Library - N8520.A53 2018




nes

Redefining eclecticism in early modern Bolognese painting: ideology, practice, and criticism / Daniel M. Unger

Rotch Library - ND614.U64 2019




nes

Japanese prints: the collection of Vincent van Gogh / Chris Uhlenbeck, Louis van Tilborgh, Shigeru Oikawa ; translations Dutch-English, Lynne Richards, Diane Webb

Rotch Library - NE1321.8.U35 2018




nes

Experimental Beijing: gender and globalization in Chinese contemporary art / Sasha Su-Ling Welland

Rotch Library - N7345.6.W46 2018




nes

Leonardo da Vinci: the 100 milestones / Martin Kemp

Rotch Library - N6923.L33 K449 2019




nes

Business and politics in Asia's key financial centres [electronic resource] : Hong Kong, Singapore and Shanghai / J.J. Woo

Woo, J. J. (Jun Jie), author




nes

Follow the signs [electronic resource] : archetypes of consciousness embodied in the signs of language / Rodney B. Sangster.

Sangster, Rodney B., 1942- author.




nes

Uniting Blacks in a raceless nation: blackness, Afro-Cuban culture, and Mestizaje in the prose and poetry of Nicolás Guillén / Miguel Arnedo-Gómez

Hayden Library - PQ7389.G84 Z536 2016




nes

La historia de mis dientes / Valeria Luiselli ; ilustraciones de Daniela Franco

Hayden Library - PQ7298.422.U37 H57 2014




nes

Otredad = Otherness / Claribel Alegría; edited by Fred Whitehead

Hayden Library - PQ7539.A47 O87 2017




nes

Uselessness: a novel / Eduardo Lalo ; translated by Suzanne Jill Levine

Hayden Library - PQ7440.L29 I8813 2017




nes

Borges: desesperaciones aparentes y consuelos secretos / Rafael Olea Franco, editor

Online Resource




nes

Sin imágenes falsas, sin falsos espejos: narradoras mexicanas del siglo XX / Aralia López González, coordinadora

Online Resource




nes

Pourquoi les homophones?


Ask anyone to define “homophone” and chances are they will a) look at you as if you have fallen out of a tree, and, b) be unable to give you an answer. Linguistic terms are generally consigned to the area of the brain housing other nuggets of redundant school knowledge such as the complete noble gases, a conjugation of être and the Fibonacci sequence. We all know that we should remember such facts (if only for vital pub quiz answers) but most of us never do. The homophone is however rather useful and I intend to explain why. Shakespeare would never have arisen to the dizzy heights of fame had he not known how to wield a homophone or two. A virtuoso of the sixteenth century pun, he paved the way for this linguistic conceit to make its way into every corner of modern literature. The oft-ignored part of the Cobbler in Julius Caesar gives us the best example, ‘I am but as you would say a cobbler…a mender of bad soles.’ Little did the Cobbler know how many thousands of students would ponder this very phrase, dutifully recording its dual meaning. Years later, the very same people emblazon on-trend phrases such as “Give peas a chance” on T-Shirts and walls, unsure as to “the exact term” for such hilarity but confident in its linguistic prowess.

Now that we have got our heads around the homophone in English, imagine what happens when you translate into French…poetry. Cynics amongst you may think it cannot be done but in 1967 a little book named Mots d’heures: gousses, rames was published to the glee of dinner party guests across the land. Luis d’Antin van Rooten transformed forty well-known English nursery rhymes into French poetry all thanks to the humble homophone. The trick of the poems was to read phonetically in the manner of Molière, and slowly but surely the English rhyme would emerge. Here’s an example:

Lille beau pipe
Ocelot serre chypre
En douzaine aux verres tuf indemne
Livre de melons un dé huile qu’aux mômes
Eau à guigne d’air telle baie indemne.

Imagine the excitement when Blue Door decided to re-publish this forgotten classic much to the cheer of van Rooten devotees. Published in time for Christmas, this collection of j’aime se will have your sides splitting quicker than you can say ‘Vive les homophones!’




nes

Invisible search and online search engines [electronic resource] : the ubiquity of search in everyday life / Jutta Haider and Olof Sundin.

Abingdon, Oxon ; New York, NY : Routledge, 2019.




nes

Capitalism, hegemony and violence in the age of drones / Norman Pollack

Online Resource




nes

War and Happiness: The Role of Temperament in the Assessment of Resolve.

Online Resource




nes

La carrera de relaciones internacionales en México: orígenes y situación actual / Luis Ochoa Bilbao

Online Resource




nes

No fly zones and international security: politics and strategy / Stephen Wrage and Scott Cooper

Dewey Library - JZ6368.W73 2019




nes

Construcción de territorios de paz: subjetivaciones, resistencias ciudadanas y pedagogías para la noviolencia / Doctorado en Estudios Sociales (UDFJC), Componente Escuela, Currículo y Pedagogía (IDEP) ; Claudia Luz Piedrahita Echand

Online Resource




nes

Soft power: the forces of attraction in international relations / Hendrik W. Ohnesorge

Online Resource




nes

The influence of civil society on Japanese nuclear disarmament policy / Kazuhiro Tobisawa

Dewey Library - JZ5675.T62 2018




nes

The ambassadors: America's diplomats on the front lines / Paul Richter

Dewey Library - JZ1480.A55 R53 2019




nes

The girls next door: bringing the home front to the front lines / Kara Dixon Vuic

Dewey Library - JZ6405.W66 V85 2019




nes

Peacekeeping in South Lebanon: credibility and local cooperation / Vanessa F. Newby

Dewey Library - JZ4971.N49 2018




nes

Re-envisaging the first age of cinematic horror, 1896-1934: quanta of fear / David Annwn Jones

Hayden Library - PN1995.9.H6 J66 2018