- From: Kevin Mack <kmack418@gmail.com>
- Date: Mon, 20 Oct 2014 13:02:29 -0400
- To: "Hall, Charles (DET-MRM)" <Charles.Hall@mrm-mccann.com>
- Cc: "public-respimg@w3.org" <public-respimg@w3.org>
- Message-ID: <CALvLtk7oo8XtcWBfify9ppyui8ocB6qsdiMiZqZ8xsfMtR6F_g@mail.gmail.com>
The comma is how @media uses multiple media types, I see it working the
same way.
On Monday, October 20, 2014, Hall, Charles (DET-MRM) <
Charles.Hall@mrm-mccann.com> wrote:
> This absolutely makes more sense.
> The expression in the query is against the *element* properties – either
> independently (your original example), or within media type properties
> (second example).
>
> The syntax in that case may need some love, as the comma serves as the
> logical operator ‘*or*’.
>
> So this:
> @media screen and (max-width: 800px), *.zone--b and (min-width: 600px)* {
> }
>
> Might be this:
> @media screen and (max-width: 800px) and *.zone--b and (min-width: 600px)* {
> }
>
> *Charles Hall*
> UX Architect, Technology
>
> t / 248.203.8723 m / 248.225.8179
> e / charles.hall@mrm-mccann.com
> <javascript:_e(%7B%7D,'cvml','charles.hall@mrm-mccann.com');>
> skype / charles.h.all
> 360 West Maple Road, Birmingham MI 48009
> w / www.mrmworldwide.com
>
> Creativity. Technology. Performance.
>
> From: Kevin Mack <kmack418@gmail.com
> <javascript:_e(%7B%7D,'cvml','kmack418@gmail.com');>>
> Date: Monday, October 20, 2014 at 12:24 PM
> To: "Charles Hall (DET-MRM)" <charles.hall@mrm-mccann.com
> <javascript:_e(%7B%7D,'cvml','charles.hall@mrm-mccann.com');>>
> Cc: "public-respimg@w3.org
> <javascript:_e(%7B%7D,'cvml','public-respimg@w3.org');>" <
> public-respimg@w3.org
> <javascript:_e(%7B%7D,'cvml','public-respimg@w3.org');>>
> Subject: Re: Element Query and Selector Media Query Types
>
> That's an interesting approach to. Let me show you an example of what
> I'm thinking:
>
> Here is a wider screen view using the same module (.media) but in three
> uses in the same layout:
>
>
> And here's the same at a smaller:
>
>
>
>
> Now this looks like a typical feature/type approach to RWD (and this can
> be done pretty easily). The big difference is that the last .media is
> rendered as the smaller view version at a larger view, how this is done is
> because it's based off of the parent container's width (.zone--b). Here's
> what this code would look like:
>
> *HTML*
> <div class="container">
> <div class="media">
> <div class="media__asset">
> <img class="image-full" src="
> http://placehold.it/500x300/000000/FFFFFF&text=image" />
> </div>
> <div class="media__details">
> <h3 class="media__title">
> Lorem ipsum dolor
> </h3>
> <p class="media__detail__content">
> Lorem ipsum dolor sit amet, consectetur adipisicing elit. Distinctio
> praesentium ipsa ullam quas esse omnis, necessitatibus officia explicabo
> voluptatum consectetur minima reprehenderit placeat aperiam velit eos
> dolorum aliquid culpa odio fugit. Eos ipsam voluptates beatae placeat
> soluta, expedita porro natus libero nisi minus dolorem nobis doloribus
> tenetur, similique facere repellendus molestiae. Illum voluptatum adipisci
> itaque fuga molestiae assumenda, et at laboriosam beatae odit quos harum
> voluptatem asperiores facilis error, quisquam optio. Minus eius quaerat
> minima, amet voluptatibus veritatis iste assumenda.
> </p>
> <a class="media__details__cta" href="#">
> Lorem ipsum dolor.
> </a>
> </div>
> </div>
>
> <div class="zone--a">
> <div class="media">
> <div class="media__asset">
> <img class="image-full" src="
> http://placehold.it/500x300/000000/FFFFFF&text=image" />
> </div>
> <div class="media__details">
> <h3 class="media__title">
> Lorem ipsum dolor
> </h3>
> <p class="media__detail__content">
> Lorem ipsum dolor sit amet, consectetur adipisicing elit. Accusantium quia
> aliquid, reprehenderit harum tenetur libero repellendus perferendis quidem
> commodi similique eos quam esse quis animi, excepturi dolorum sint aperiam
> in!
> </p>
> <a class="media__details__cta" href="#">
> Lorem ipsum dolor.
> </a>
> </div>
> </div>
> </div>
>
> <div class="zone--b">
> <div class="mediab">
> <div class="mediab__asset">
> <img class="image-full" src="
> http://placehold.it/500x300/000000/FFFFFF&text=image" />
> </div>
> <div class="mediab__details">
> <h3 class="mediab__title">
> Lorem ipsum dolor
> </h3>
> <p class="mediab__detail__content">
> Lorem ipsum dolor sit amet, consectetur adipisicing elit. Accusantium quia
> aliquid, reprehenderit harum tenetur libero repellendus perferendis quidem
> commodi similique eos quam esse quis animi, excepturi dolorum sint aperiam
> in!
> </p>
> <a class="mediab__details__cta" href="#">
> Lorem ipsum dolor.
> </a>
> </div>
> </div>
> </div>
>
> </div>
>
>
> *CSS*
>
>
> body {
> font-family: monospace;
> }
>
> * {
> box-sizing: border-box;
> }
>
> .image-full {
> display: block;
> height: auto;
> width: 100%;
> }
>
> .container {
> max-width: 1400px;
> }
>
> .container:after {
> content: "";
> clear: both;
> display: table;
> width: 100%;
> }
>
> @media screen and (min-width:1440px) {
> .container {
> margin-left: auto;
> margin-right: auto;
> }
> }
>
> @media screen and (max-width:1440px) {
> .container {
> margin-left: 20px;
> margin-right: 20px;
> }
> }
>
> @media screen and (min-width: 800px) {
> .zone--a, .zone--b {
> float: left;
> }
>
> .zone--a {
> width: 75%;
> }
>
> .zone--b {
> padding-left: 1rem;
> width: 25%;
> }
> }
>
> .media {
> padding-bottom: 1rem;
> }
>
> .media__title, .media__detail__content {
> margin-bottom: 1rem;
> }
>
> .media__details {
> padding-left: 1rem;
> }
>
> .media__detail__content {
> margin-top: 0;
> }
>
> .media__details__cta {
> font-weight: 700;
> text-decoration: none;
> }
>
> @media screen and (min-width: 800px) {
> .media {
> display: table;
> width: 100%;
> }
>
> .media__asset,.media__details {
> display: table-cell;
> vertical-align: top;
> }
>
> .media__asset {
> width: 500px;
> }
>
> .media__title {
> margin-top: 0;
> font-size: 3em;
> }
>
> .media__details {
> padding-left: 1rem;
> }
>
> .media__details__cta:after {
> content: ">";
> }
> }
>
> @media screen and (max-width: 800px), *.zone--b and (min-width: 600px)* {
> .media {
> background-color: #ccc;
> }
>
> .media__title {
> font-size: 2em;
> margin-top: 1rem;
> }
>
> .media__details__cta {
> background-color: #000;
> color: #FFF;
> display: inline-block;
> padding: .5rem 1rem;
> }
>
> .media__details {
> padding-right: 1rem;
> }
> }
>
>
>
> Looking at the code above, using *.zone--b and (min-width: 800px)*makes
> the design change based off of the parent's width of .zone--b. zone--b is
> rendered at 350px at larger viewport (25% of the 1400px of .container).
> This covers the case for parent-child selector query and then aligns with
> viewport to selector (traditional) and how they can be used together.
>
> Does this help or add more confusion?
>
>
> On Mon, Oct 20, 2014 at 11:25 AM, Hall, Charles (DET-MRM) <
> Charles.Hall@mrm-mccann.com
> <javascript:_e(%7B%7D,'cvml','Charles.Hall@mrm-mccann.com');>> wrote:
>
>> Hi Kevin,
>>
>> I’m not entirely clear on your use cases.
>>
>> My understanding of @media queries:
>> Conditionally check for media type (print, screen, all), then any number
>> and/or type of expressions (height, orientation, color), then any explicit
>> or range of value (60em, 25%, 50vw) and apply what follows when all produce
>> a match.
>>
>> So, in the case of Element queries, I believe that they would check for
>> element type (<aside>, <input>, <blockquote>), then any number and/or type
>> of attributes (dir=, target=, data-name=), then any explicit or partial
>> value ("ltr", "#top", "mathBox"), then any other condition required, and
>> apply what follows when all produce a match – simply now in CSS, and no
>> longer limited to JS/jQuery.
>>
>> A use case could be: “I have 2 dynamic aside elements that share
>> multiple classes and attributes and I need a simple CSS selector that does
>> not require source order or complex combinators.”
>>
>> The structure and syntax in this case would be something like this:
>>
>> @element aside and (data-name="mathBox") {
>> fieldset { border: 1px solid red; }
>> }
>>
>> This of course can currently be written with an attribute selector
>> (below), but I wanted to write a very simple syntax as a starting point.
>>
>> fieldset [data-name="mathBox"] { border: 1px solid red; }
>>
>> I hope this adds another perspective to the conversation.
>>
>> Thanks,
>>
>>
>> *Charles Hall*
>> UX Architect, Technology
>>
>> t / 248.203.8723 m / 248.225.8179
>> e / charles.hall@mrm-mccann.com
>> <javascript:_e(%7B%7D,'cvml','charles.hall@mrm-mccann.com');>
>> skype / charles.h.all
>> 360 West Maple Road, Birmingham MI 48009
>> w / www.mrmworldwide.com
>>
>> Creativity. Technology. Performance.
>>
>> From: Kevin Mack <kmack418@gmail.com
>> <javascript:_e(%7B%7D,'cvml','kmack418@gmail.com');>>
>> Date: Monday, October 20, 2014 at 9:45 AM
>> To: "public-respimg@w3.org
>> <javascript:_e(%7B%7D,'cvml','public-respimg@w3.org');>" <
>> public-respimg@w3.org
>> <javascript:_e(%7B%7D,'cvml','public-respimg@w3.org');>>
>> Subject: Re: Element Query and Selector Media Query Types
>> Resent-From: <public-respimg@w3.org
>> <javascript:_e(%7B%7D,'cvml','public-respimg@w3.org');>>
>> Resent-Date: Monday, October 20, 2014 at 9:46 AM
>>
>> Wanted to see if anyone else had any thoughts/opinions on *Element
>> Query and Selector Media Query Types*? I want to really start pushing
>> these but I want to make sure that I have support of the community and
>> these have been thought-through.
>>
>> Let me know, it's very appreciated // Thank you!
>> *Kevin Mack*
>>
>> On Sun, Oct 12, 2014 at 4:39 PM, Kevin Mack <kmack418@gmail.com
>> <javascript:_e(%7B%7D,'cvml','kmack418@gmail.com');>> wrote:
>>
>>> Hello hello!
>>>
>>> With the success of Picture Element/@srcset, I feel we should continue
>>> the momentum. I have a suggestion for two new media-query types, they are:
>>> *content* and "*selector*" (including pseudo selectors) queries. Both
>>> would utilize the same media-query features that already exist and extend
>>> the use of media-queries to create more modular, portable, reusable code.
>>>
>>> The idea is have a solutions for the "Element Query" and "Content
>>> Query", which has been handled frequently by JavaScript.
>>>
>>>
>>> The* Element Query* would work similar to how an iframe works within a
>>> container – the container has the constraints of width and the content
>>> inside the iframe has a client width of the container.
>>>
>>> Here's one use-case of what I imagine the Element Query working like:
>>>
>>> *<style>*
>>> *.container {*
>>> *max-width: 1000px;*
>>> *margin-right: auto;*
>>> *margin-left: auto;*
>>> *}*
>>>
>>> *.nav {*
>>> *display: block;*
>>> *margin-top: 0;*
>>> *margin-bottom: 0;*
>>> *padding-left: 0;*
>>> *list-style: none;*
>>> *}*
>>>
>>> *@media .nav and (max-width: 800px) {*
>>> *.nav__item {*
>>> *display: block;*
>>> *}*
>>> *}*
>>>
>>> *@media .nav and (min-width: 801px) {*
>>> *.nav__item {*
>>> *display: inline-block;*
>>> *}*
>>> *}*
>>> *</style>*
>>>
>>> *<div class="container">*
>>> *<ul class="nav">*
>>> *<li class="nav__item">*
>>> *<a href="#">*
>>> *Lorem ipsum dolor*
>>> *</a>*
>>> *</li>*
>>> *<li class="nav__item">*
>>> *<a href="#">*
>>> *Consectetur adipisicing elit*
>>> *</a>*
>>> *</li>*
>>> *<li class="nav__item">*
>>> *<a href="#">*
>>> *Impedit ut accusamus*
>>> *</a>*
>>> *</li>*
>>> *<li class="nav__item">*
>>> *<a href="#">*
>>> *Lorem ipsum dolor*
>>> *</a>*
>>> *</li>*
>>> *</ul>*
>>> *</div>*
>>>
>>>
>>> Second is the *Content Query* that's best described in this example:
>>> if I have two headlines, "This Is My Title" and "This Is A REALLY Long
>>> Title for a Section". If the content has a max-width of 30em, then apply a
>>> fixed max-width to make the title look "more presentable" at a larger
>>> viewport.
>>>
>>> *<style>*
>>> *@media content and (min-width: 30em) {*
>>> *.section-title {*
>>> *max-width: 16em;*
>>> *}*
>>> *}*
>>> *</style>*
>>>
>>>
>>> *<h1>*
>>> *This Is A Title*
>>> *</h1>*
>>>
>>> *<h1 class="section-title">*
>>> *This Is A REALLY Long Title*
>>> *for a Section*
>>> *</h1>*
>>>
>>>
>>> I am eager to see solutions like these in place, it would dramatically
>>> reduce development time and promote best practices for developing CSS/HTML
>>> in a responsive experience.
>>>
>>>
>>>
>>> Thoughts?
>>> - *Kevin Mack*
>>>
>>>
>>
>
Attachments
- image/png attachment: larger.png
- image/png attachment: smaller.png
- image/png attachment: 5D510C5C-1CCD-479C-A466-98D1FC580B9B_11_.png
- image/png attachment: 5D510C5C-1CCD-479C-A466-98D1FC580B9B_12_.png
Received on Monday, 20 October 2014 17:03:00 UTC