示例#1
0
        protected virtual bool ParseMediaQuery(ItemFactory itemFactory, ITextProvider text, TokenStream tokens)
        {
            MediaQuery mq = itemFactory.CreateSpecific <MediaQuery>(this);

            if (mq.Parse(itemFactory, text, tokens))
            {
                MediaQueries.Add(mq);
                Children.Add(mq);
                return(true);
            }

            return(false);
        }
示例#2
0
        public static void AddMediaQuery(string className, CssParsedUnit cssParsedUnit)
        {
            string mediaQuery = $"{{ width:{cssParsedUnit} !important; max-width: {cssParsedUnit}; }}";

            if (MediaQueries.ContainsKey(className))
            {
                var mediaQueryCurrent = MediaQueries[className];

                if (mediaQueryCurrent.Equals(mediaQuery, StringComparison.InvariantCultureIgnoreCase))
                {
                    return;
                }
            }

            MediaQueries.Add(className, mediaQuery);
        }
示例#3
0
        // https://github.com/mjmlio/mjml/blob/d4c6ea0744e05c928044108c3117c16a9c4110fe/packages/mjml-core/src/helpers/mediaQueries.js
        private static string BuildMediaQueriesTags(bool forceOWADesktop = false)
        {
            if (!MediaQueries.Any())
            {
                return(string.Empty);
            }

            StringBuilder sb = new StringBuilder();

            sb.Append($@"
                <style type=""text/css"">
                    @media only screen and (min-width:{Breakpoint}) {{
            ");

            foreach (var mediaQuery in MediaQueries)
            {
                sb.AppendLine($@".{mediaQuery.Key} {mediaQuery.Value}");
            }

            sb.Append($@"
                    }}
                </style>
            ");

            if (forceOWADesktop)
            {
                sb.AppendLine($@"<style type=""text/css"">");

                foreach (var mediaQuery in MediaQueries)
                {
                    sb.AppendLine($@"[owa] .{mediaQuery.Key} {mediaQuery.Value}");
                }

                sb.AppendLine($@"</style>");
            }

            return(sb.ToString());
        }