ng Spacing elements By simurai.com Published On :: Sun, 25 May 2014 00:00:00 +0000 So let’s say we have a “bar” with some items inside. Like a header or footer. Let’s also say we want those items to be spaced evenly, meaning they have the same gap everywhere. Shouldn’t be a big problem. Let’s take a look: 1. Margin We can’t just add margin: 2rem to the elements since there is no margin collapsing on the horizontal axis. And it also doesn’t work when using Flexbox. Leaving a double sized gap in between. Wishing there is something like margin: 2rem collapse; where you can enable/disable it optionally. See the Pen Spacing elements (no collapsing) by simurai (@simurai) on CodePen. 2. Pseudo classes Using margin: 2rem 0 2rem 2rem and then a pseudo class like :last-child { margin-right: 2rem } to add the extra margin works as long as you don’t need to hide that element with display: none. Maybe a rare case, but I’ve been running into this issue once in a while. Would be cool if there is something like :last-displayed that would ignore elements that have display:none. See the Pen Spacing elements (pseudo) by simurai (@simurai) on CodePen. 3. Margin + padding (best) The easiest way I think, is to add margins to all elements (like in the first example), but then also add the same value as padding to the parent element. Like this: .Header { padding: 1rem; } .Header-item { margin: 1rem; } That way all elements are evenly spaced and you still can use display:none without having to worry about breaking it. A little flaw is that you have to keep the 2 values in sync, but if you’re using a preprocessor, it can just be a single variable. Or maybe you could use REM’s to control it with font-size from the :root. See the Pen Spacing elements by simurai (@simurai) on CodePen. Other? There are more ways but I’m not aware of a simple one that also let’s you use display: none. Let me know otherwise. Maybe the Visual Format Language in GSS? Looks quite slick. Update A couple more options: Using Grandpa’s table, still need to test this Using calc() Using Adjacent selector More selector “hacks”: 1, 2 Hmmm.. gotta try some. I kinda like the 3rd one. Keeps it independent from the parent and is not “too” complicated. Full Article
ng Filtering (photo) filters By simurai.com Published On :: Sun, 20 Jul 2014 00:00:00 +0000 A lot of photo apps allow you to add filters before sharing. The typical UI for picking a filter is a row of little thumbnails that can be horizontally scrolled. I’m sure you’ve used it many times. It looks something like this: The problem A filter picker like that is easy to understand and works pretty well. But in my case, there is something that has been bugging me a bit. Here is how I use it: I start with the first thumbnail and then just keep tapping one after the other. If there is a filter that I like, I try to remember its name. And somewhat its position, but more like “somewhere at the beginning”. Then once I reach the end, I start scrolling back trying to find the ones I liked. Usually there are like 2-3 filters that I would like to quickly compare before making my final choice. But it’s quite hard to scroll between them, especially if they are far apart. Also having to remember their name/position costs some precious brain power. Now, I don’t really know how most people use these filter pickers. Could be that: Most people just stop once they found a filter they kinda like and don’t bother trying the rest. Or some have a few favorites and know their name/position already. You could also just look at the little thumbnails. But some filters are very similar and I need to see them on the actual photo to judge. Possible solutions So I was thinking about some possible improvements: 1. Order by popularity Automatically order the filters based on how often they get used. This makes filters that you use most appear at the beginning and are easier to get to. You could always keep scrolling in case you’re in the mood for something new. This would of course mess it up for people that have filters remembered by position. But not sure how many actually do that. 2. Manual re-order Let people manually reorder the position. Could be done similar like the home screen icons on iOS (long press until they wiggle, then drag around). I would probably move my favorites to the front and also sort based on color/style. 3. Narrow down Let people temporarily toss away the filters they don’t want. This would allow you to narrow down your selection to just a few for easier comparison. Of course, all the filters would be back next time you take a new photo. Or probably even better (3B): Instead of throwing away the ones you don’t like (could be tedious if there are a lot of filters), you could push up only the ones you like and they would move to the right with a visual separator. It’s similar how you can pin a Chrome browser tab to separate it from the rest. Then once you scrolled to the end, you would have all your previously selected filters next to each other, waiting to be the lucky winner. Conclusion I understand that the suggestions might make a photo app more complicated and harder to explain to a new user. But it could be more a “power user” feature that you’re not forced to use if you don’t want to. Anyways, in case I’m not the only one with this (small) problem, I hope some day we will have a better way to filter filters. Ohh.. and let me know if you’re already using an app that tackles this somehow. Update Thanks for all the comments. Good to see more people thinking about this. I played around a bit more with the demo, mostly after the conversation with Ignacio in the comments below. So here a 4th option: 4. Select and cycle Let people select a couple filters and then cycle through them by tapping on the photo. It’s actually similar to 3B, but it keeps the UI simple by using the photo as the secondary navigation control. Here the steps how to use: You can tab each filter until you find one you like. If you tab a 2nd time on that filter, it gets selected as a “favorite”. It will move up a little to visualize it. You can keep trying other filters and mark more as favorites. Once you reached the end (or think you have enough), you can tap on the photo above the filter picker to quickly cycle through all your previously selected (favorited) filters. Now comparing different filters is really quick and easy. Try the demo. The implementation of the demo could still be improved. It is a bit hard to discover that you can tap the photo to cycle through your favorites. Might need some visual clue to help understand it better. Adding swipe gestures instead of tapping would also improve UX. Or to remove a filter from your favorite selection, you could just swipe down on the image. Also note that the filters are CSS based and still a bit glitchy when animating. But you should get the idea. Update II Manuel Haring explored a similar concept where you can push up filters to narrow down your selection. Here a larger video that has even a third selection stage. Full Article
ng Nesting Components By simurai.com Published On :: Mon, 11 May 2015 00:00:00 +0000 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: Descendant selectors if we can expect that components don’t change much. Like when using a UI Kit or library. Variations if it makes sense that a component has different versions that get reused anyways, and not just for a specific context. 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. Extending when we truly want the components to be separated and don’t mind inflating the CSS output. Utilities for very specific things, that once the class is defined, it will never change, like clearing floats. 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. Full Article
ng Contextual styling with custom properties By simurai.com Published On :: Sun, 01 Apr 2018 00:00:00 +0000 Something I’ve been wanting for a long time, define different regions like a footer section, or side bar and not have to deal with all the contextual styling hassle. A.k.a. “Now that this button is used on a dark background, the button needs to change its colors too. Where should the styles live?”. Here an old post about struggling with contextual styling. So then the other day I was doing some experiments with using custom properties for Atom’s UI. Turns out, using custom properties might make contextual styling a bit easier. For the rest of the post, let’s switch to a more simple example. A page where the main area is light, but then has a dark hero and footer section. Like this: In the past, I probably would’ve created variations like Button--dark or overwrote it with header .Button {…}. Depends a bit on the project. Here another approach: Create themes with a set of variables, then apply the theme to the different areas. 1. Default theme First let’s define our default theme with a bunch of variables. [data-theme="default"] { --fg: hsl(0,0%,25%); --border: hsl(0,0%,75%); --bg: hsl(0,0%,95%); --button-bg: hsl(0,0%,99%); --input-bg: hsl(0,0%,90%); } Then we create some components where we use the variables defined above. [data-theme] { color: var(--fg); background-color: var(--bg); } .Button { color: var(--fg); border: 1px solid var(--border); background-color: var(--button-bg); } .Input { color: var(--fg); border: 1px solid var(--border); background-color: var(--input-bg); } And lastly we add the [data-theme="default"] attribute on the body so that our components will pick up the variables. <body data-theme="default"> If you wonder why use data-theme attributes over classes? Well, no specific reason. Maybe with attributes, it’s a hint that only one theme should be used per element and is more separated from your other classes. At this point we get this: See the Pen Contextual styling with custom properties (1/3) by simurai (@simurai) on CodePen. 2. Dark theme But our designer wants the hero and footer to be dark. Alright, let’s define another theme region. [data-theme="dark"] { --fg: hsl(0,10%,70%); --border: hsl(0,10%,10%); --bg: hsl(0,0%,20%); --button-bg: hsl(0,0%,25%); --input-bg: hsl(0,0%,15%); } And add the theme attribute to the header and footer. <header data-theme="dark"> <footer data-theme="dark"> Which gives us this: See the Pen Contextual styling with custom properties (2/3) by simurai (@simurai) on CodePen. The reason why this works is that custom properties cascade and can be overridden on nested elements, just like normal properties. 3. Hero theme A few months pass and our designer comes back with a redesigned hero section. “To make it look fresh” with a splash of color. No problem! Just like with the dark theme, we define a new “hero” theme. [data-theme="hero"] { --fg: hsl(240,50%,90%); --border: hsl(240,50%,10%); --bg: hsl(240,33%,30%); --button-bg: hsl(240,33%,40%); --input-bg: hsl(240,33%,20%); } <header data-theme="hero"> And here is that fresh hero: See the Pen Contextual styling with custom properties (3/3) by simurai (@simurai) on CodePen. It’s also not limited to colors only, could be used for sizes, fonts or anything that makes sense to define as variables. Benefits Using these theme “regions” lets your components stay context un-aware and you can use them in multiple themes. Even on the same page. Developers can add components, move components around, without having to know about in what context (theme) they live. The markup for the components stays the same. Design systems authors can create new components without worrying about where they get used, the variables used in components stay the same. Designers can define new theme regions, or change existing ones, without having to make changes to a component’s HTML or CSS, it stays the same. Less time to talk about who, how and where, more time to talk about the weather. ☔️???? Concerns Yeah, right. The big question: But does it scale? Can this be used for all use cases. Ok, I’m pretty sure it doesn’t fit all situations. There are just too many to find a single solution for them all. And I’m actually not sure how well it scales. I guess it works great in these simple demos, but I have yet to find a larger project to test it on. So if you have used (or plan to use) this approach, I’m curious to know how it went. A concern I can imagine is that the list of variables might grow quickly if themes have totally different characteristics. Like not just a bit darker or lighter backgrounds. Then you might need to have foreground and border colors for each component (or group of components) and can’t just use the general --fg and --border variables. Naming these variables is probably the hardest part. Update I @giuseppegurgone made an interesting comment: in suitcss projects I used to define component level custom props, theme variables and then create themes by mapping the former to the latter suitcss-toolkit So if I understood it correctly, by mapping theme variables to component variables, you could avoid your theme variables from growing too much and you can decide for each component how to use these theme variables. Update II If it’s too early to use custom properties in your project, @szalonna posted an example how to do something similar in SCSS. Full Article
ng 17 Tools for Effective Customer Engagement By www.webdesignerdepot.com Published On :: Thu, 23 Apr 2020 10:45:09 +0000 The one thing that every business that offers a service has in common is its customers. It doesn't matter if you are a freelancer with just one client or a small design agency with a few clients, you have to deal with customers on a day to day basis. Full Article Tools & Resources client surveys customer feedback apps customer relations tools customer service apps customer surveys
ng Email Personalization: Your Secret To Better Engagement By www.webdesignerdepot.com Published On :: Wed, 29 Apr 2020 10:45:54 +0000 One of the struggles that marketers face is how to send the right message at exactly the right time to target people in a way that will appeal to them. To solve the problem, businesses need to get themselves acquainted with new technologies and the power of personalization. In the past few years, digital marketing […] Full Article Search & Marketing customer funnel email engagement email marketing marketing tips personalized email
ng The matter of photography in the Americas / Natalia Brizuela and Jodi Roberts ; with contributions by Lisa Blackmore, Amy Sara Carroll, Marianela D'Aprile, María Fernanda Domínguez, Heloisa Espada, Rachel Price, Diana Ruiz, Tatiane Santa Ro By library.mit.edu Published On :: Sun, 16 Feb 2020 06:00:01 EST Rotch Library - TR184.B75 2018 Full Article
ng How art can be thought: a handbook for change / Allan deSouza By library.mit.edu Published On :: Sun, 16 Feb 2020 06:00:01 EST Rotch Library - N7425.D459 2018 Full Article
ng The women of Atelier 17: modernist printmaking in midcentury New York / Christina Weyl By library.mit.edu Published On :: Sun, 16 Feb 2020 06:00:01 EST Rotch Library - NE538.N5 W49 2019 Full Article
ng Legacy of the masters: painting and calligraphy of the Islamic world from the Shavleyan family collection / Will Kwiatkowski ; with contributions by John Seyller By library.mit.edu Published On :: Sun, 16 Feb 2020 06:00:01 EST Rotch Library - N6260.K87 2019 Full Article
ng Djordje Ozbolt: regaining memory loss / exhibition curator, Nicoletta Lambertucci By library.mit.edu Published On :: Sun, 23 Feb 2020 06:00:02 EST Rotch Library - N6488.I8 V433 2019 Y8 Full Article
ng New design, neoplasticism: Nieuwe beelding / Piet Mondrian ; English translation by Harry Holtzman and Martin S. James By library.mit.edu Published On :: Sun, 23 Feb 2020 06:00:02 EST Rotch Library - N6948.5.D42 M6613 2019 Full Article
ng Inventing Boston: design, production, and consumption / Edward S. Cooke, Jr By library.mit.edu Published On :: Sun, 23 Feb 2020 06:00:02 EST Rotch Library - NK838.B67 C66 2019 Full Article
ng The shrinking universe: Ireland at Venice 2019 / Eva Rothschild By library.mit.edu Published On :: Sun, 23 Feb 2020 06:00:02 EST Rotch Library - N6488.I8 V433 2019 I73 Full Article
ng Fields of fungus and sunflowers / [edited and designed by Tammy Nguyen ; contributions by Lovely Umayam and Adriel Luis] By library.mit.edu Published On :: Sun, 23 Feb 2020 06:00:02 EST Rotch Library - N7433.35.U6 M37 no.6 Full Article
ng Land, sand, strand: activation manual / drawings by Suki Seokyeong Kang By library.mit.edu Published On :: Sun, 23 Feb 2020 06:00:02 EST Rotch Library - N6488.I8 V433 2019 K6 Full Article
ng Women, art and money in late Victorian and Edwardian England: the hustle and the scramble / Maria Quirk By library.mit.edu Published On :: Sun, 23 Feb 2020 06:00:02 EST Rotch Library - N8354.Q57 2019 Full Article
ng Indios antropófagos: a butterfly garden in the (urban) jungle By library.mit.edu Published On :: Sun, 23 Feb 2020 06:00:02 EST Rotch Library - N6488.I8 V433 2019 P4 Full Article
ng Exercises in freedom: polnische Konzeptkunst, 1968-1981 = Polish conceptualism, 1968-1981 / Herausgeber = editor, Staatliche Kunstsammlungen Dresden, Kupferstich-Kabinett, Björn Egging By library.mit.edu Published On :: Sun, 23 Feb 2020 06:00:02 EST Rotch Library - N7255.P6 E88 2018 Full Article
ng Animal: exploring the zoological world / project editor, Lucy Kingett By library.mit.edu Published On :: Sun, 23 Feb 2020 06:00:02 EST Hayden Library - N7660.A653 2018 Full Article
ng The M.V.M. Cappellin glassworks and the young Carlo Scarpa: 1925-1931 / edited by Marino Barovier and Carla Sonego By library.mit.edu Published On :: Sun, 23 Feb 2020 06:00:02 EST Rotch Library - NK5205.S28 A4 2018 Full Article
ng The stronger we become: the South African pavilion / Dineo Seshee Bopape, Tracey Rose, Mawande Ka Zenzile ; curated by Nkule Mabaso, Nomusa Makhubu By library.mit.edu Published On :: Sun, 23 Feb 2020 06:00:02 EST Rotch Library - N6488.I8 V433 2019 S6 Full Article
ng My dearest Aiyana / [contributors, Daniil Davydoff, Naima Green, and Tuan Andrew Nguyen ; edited by Tammy Nguen] By library.mit.edu Published On :: Sun, 23 Feb 2020 06:00:02 EST Rotch Library - N7433.35.U6 M37 no.7 Full Article
ng Biennale Arte 2019: may you live in interesting times: 11.05-24.11 Venezia Giardini/Arsenale By library.mit.edu Published On :: Sun, 23 Feb 2020 06:00:02 EST Rotch Library - N6488.I8 V433 2019 A1 Full Article
ng Saules: Suns / artist = māksliniece, Daiga Grantin̦a ; curators = kuratori, Valentinas Klimašauskas, Inga Lāce By library.mit.edu Published On :: Sun, 23 Feb 2020 06:00:02 EST Rotch Library - N6488.I8 V433 2019 L35 Full Article
ng Sunniness in painting: from Edward Hopper to David Hockney / Nicola Vitale By library.mit.edu Published On :: Sun, 23 Feb 2020 06:00:02 EST Rotch Library - ND1140.V58 2019 Full Article
ng History has failed us, but no matter: siren eun young jung, Jane Jin Kaisen, Hwayeon Nam By library.mit.edu Published On :: Sun, 23 Feb 2020 06:00:02 EST Rotch Library - N6488.I8 V433 2019 K6b Full Article
ng Socially engaged art and the neoliberal city / Cecilie Sachs Olsen By library.mit.edu Published On :: Sun, 23 Feb 2020 06:00:02 EST Rotch Library - N72.A76 O47 2019 Full Article
ng Reading closed books / Sam Winston By library.mit.edu Published On :: Sun, 23 Feb 2020 06:00:02 EST Rotch Library - N7433.4.W56 R4 2018 Full Article
ng Conversation pieces: the world of Bruegel / Abdelkader Benali, Alexandra van Dongen, Katrien Lichtert, Sabine Pénot, Lucinda Timmermans ; translation, Patrick Lennon, Michael Lomax By library.mit.edu Published On :: Sun, 23 Feb 2020 06:00:02 EST Rotch Library - ND673.B73 B46 2018 Full Article
ng Harry Clarke and artistic visions of the new Irish state / edited by Angela Griffin, Marguerite Helmers & Róisín Kennedy By library.mit.edu Published On :: Sun, 23 Feb 2020 06:00:02 EST Rotch Library - NK5398.C64 H37 2019 Full Article
ng Yves Netzhammer: Installationen 2008-2018 / Gesamtverantwortung, Katharina Epprecht ; Hrsg. von Jennifer Burkard ; Autoren, Claudia Bader [and four others] By library.mit.edu Published On :: Sun, 23 Feb 2020 06:00:02 EST Rotch Library - N7153.N47 A4 2018 Full Article
ng Am I there yet?: the loop-de-loop, zigzagging journey to adulthood / by Mari Andrew By library.mit.edu Published On :: Sun, 23 Feb 2020 06:00:02 EST Hayden Library - NC1429.A6325 A2 2018 Full Article
ng Model as painting / Pieter Schoolwerth ; contributors, Pieter Schoolwerth, David Geers, Molly Warnock ; editor: Katherine Pickard By library.mit.edu Published On :: Sun, 23 Feb 2020 06:00:02 EST Rotch Library - N6537.S3589 A4 2019 Full Article
ng Situating global art: topologies, temporalities, trajectories / Sarah Dornhof, Nanne Buurman, Birgit Hopfener, Barbara Lutz (eds.) By library.mit.edu Published On :: Sun, 23 Feb 2020 06:00:02 EST Rotch Library - N72.G55 S58 2018 Full Article
ng Per Kirkeby / herausgegeben von Florian Steininger ; mit Beiträgen von Robert Fleck, Per Kirkeby, Florian Steininger By library.mit.edu Published On :: Sun, 23 Feb 2020 06:00:02 EST Rotch Library - ND723.K53 A4 2018 Full Article
ng Belonging: a German reckons with history and home / Nora Krug By library.mit.edu Published On :: Sun, 23 Feb 2020 06:00:02 EST Barker Library - NC975.5.K78 A2 2018 Full Article
ng Illuminated Paris: essays on art and lighting in the belle époque / Hollis Clayson By library.mit.edu Published On :: Sun, 23 Feb 2020 06:00:02 EST Rotch Library - N8214.5.F8 C539 2019 Full Article
ng Hilma af Klint: paintings for the future / Tracey Bashkoff By library.mit.edu Published On :: Sun, 23 Feb 2020 06:00:02 EST Rotch Library - ND793.K63 A4 2018 Full Article
ng Voyaging out: British women artists from suffrage to the sixties / Carolyn Trant By library.mit.edu Published On :: Sun, 1 Mar 2020 06:00:02 EST Rotch Library - N8354.T72 2019 Full Article
ng The mobility of people and things in the early modern Mediterranean: the art of travel / edited by Elisabeth A. Fraser By library.mit.edu Published On :: Sun, 1 Mar 2020 06:00:02 EST Rotch Library - N72.G55 M63 2020 Full Article
ng Art beyond borders: artistic exchange in communist Europe (1945-1989) / edited by Jérôme Bazin, Pascal Dubourg Glatigny, and Piotr Piotrowski By library.mit.edu Published On :: Sun, 8 Mar 2020 06:00:02 EDT Online Resource Full Article
ng Everything is relevant: writings on art and life 1991-2018 / Ken Lum By library.mit.edu Published On :: Sun, 15 Mar 2020 06:00:01 EDT Online Resource Full Article
ng Trouble with women artists: reframing the history of art / Laure Adler & Camille Viéville ; translated from the French by Kate Robinson By library.mit.edu Published On :: Sun, 15 Mar 2020 06:00:01 EDT Rotch Library - N8354.A3513 2019 Full Article
ng Bestowing beauty: masterpieces from Persian lands-selections from the Hossein Afshar collection / edited by Aimée Froom ; with essays by Walter B. Denny, Aimée Froom, Melanie Gibson, and David J. Roxburgh; and contributions by Robert Hillenbrand By library.mit.edu Published On :: Sun, 15 Mar 2020 06:00:01 EDT Rotch Library - N7280.B47 2019 Full Article
ng Indian life and people in the 19th century: company paintings in the TAPI Collection / J.P. Losty ; with an introduction by John Keay By library.mit.edu Published On :: Sun, 15 Mar 2020 06:00:01 EDT Rotch Library - ND2048.L67 I53 2019 Full Article
ng Inside Tangier: houses & gardens / Nicolò Castellini Baldissera ; photography, Guido Taroni ; foreword, Hamish Bowles By library.mit.edu Published On :: Sun, 22 Mar 2020 06:00:01 EDT Rotch Library - NK2087.75.A1 B35 2019 Full Article
ng Hot, cold, heavy, light: 100 art writings, 1988-2018 / Peter Schjeldahl ; edited with an introduction by Jarrett Earnest By library.mit.edu Published On :: Sun, 22 Mar 2020 06:00:01 EDT Rotch Library - N7445.2.S35 2019 Full Article
ng 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 By library.mit.edu Published On :: Sun, 22 Mar 2020 06:00:01 EDT Rotch Library - N8520.A53 2018 Full Article
ng New approaches to spatial planning and design: planning, design, applications / Murat Özyavuz By library.mit.edu Published On :: Sun, 22 Mar 2020 06:00:01 EDT Rotch Library - NK1520.O99 2019 Full Article